2013-05-11 61 views
3

我今天XMPPFramework一个挑战......XMPPFramework/iOS的问题:发送和接收订阅

我已经正确配置ejabberd:服务器是启动和运行,并通过带注册正确注册用户。

但是,当我尝试从一个设备发送订阅请求时,第二个不能接收第一个设备的在线状态。下面是我使用的第一个设备上的订阅用户的代码,如记录:

[[[self appDelegate] xmppRoster] addUser:userJID withNickname:nickname groups:nil subscribeToPresence:YES]; 

如果一切正常的话,第二个设备必须解雇的委托方法:

- (void)xmppRoster:(XMPPRoster *)sender didReceiveBuddyRequest:(XMPPPresence *)presence 

的问题是这个委托方法从未被解雇。 服务器为用户创建新联系人,我可以在ejabberd Web管理员上看到它,但订阅类型设置为无。

任何想法?

UPDATE:

嗯,看来我忘记包括主机名到JID。现在,XMPPRoster的代表没有被调用,但是我可以在ejabberd上看到请求不是'none',而是'Both'和待验证。

无法想象为什么XMPPRoster代表不烧...看来,当用户收到新订阅请求ejabberd服务器不发送正确的通知...

回答

1

似乎eJabberd是配置错误或其他。刚刚安装了OpenFire,一切正常。

+0

嗨Yoryo,我面临同样的问题,我使用明火,但没有得到一个用户的存在。请帮忙,其紧急 – Khushboo 2014-07-30 17:51:47

+0

嗯,我不再使用这个XMPPFramework项目,但我记得OpenFire有一个用户管理工具。也许你必须查看你从委托方法中得到的节。你可以在这里阅读:https://github.com/robbiehanson/XMPPFramework/wiki/IntroToFramework – 2014-07-31 06:20:37

+0

我有理由相信OpenFire可能有解决JID的“资源”部分的方法,而ejabberd并没有。当JID的资源部分被添加和订阅时,委托方法触发。 – esh 2014-12-31 14:46:44