iOS XMPP 从不接收任何好友/名册请求
Posted
技术标签:
【中文标题】iOS XMPP 从不接收任何好友/名册请求【英文标题】:iOS XMPP never receives any friend / roster requests 【发布时间】:2016-04-17 12:06:00 【问题描述】:设置
我正在使用此代码发送好友/名册请求:
[[[XMPPController sharedObject] roster] addUser:[XMPPJID jidWithString:[user stringByAppendingString:@"@server.com"]] withNickname:nil];
我可以确认在 ejabberd Web Admin 控制面板中发送了请求。此外,请求在流委托方法中返回:
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq
作为确认。
我在这里阅读了多个问题,请求应在委托方法中处理:
- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence
或者
- (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence
问题
问题是一旦发送请求,这些方法都不会被调用。
测试于
iPhone 5 (ios 9.3.1) iPhone 模拟器 (iOS 9.3)从任一设备发送都不会成功。
注意事项
我可以确认好友请求已发送,因为它在 ejabberd 管理面板中可见。此外,如果从管理面板添加用户,则客户端不会发生任何事情(即应该接收请求的用户。)。
【问题讨论】:
【参考方案1】:没有调用方法- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence
或- (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence
,因为您没有发送任何XMPPPresence
。
【讨论】:
我在- (void)xmppStreamDidConnect:(XMPPStream *)sender
中使用XMPPPresence *presence = [XMPPPresence presence]; [self.stream sendElement:presence];
发送出席信息。这是正确的做法吗?
发送好友请求时应该发送出席信息!它应该可以工作
我尝试在发送好友请求之前和之后(以及两者)都放置代码,但我仍然没有收到对方的回应
如果你想接收一个出席对象,你的服务器也必须发送一个出席对象
如何检查/启用它?以上是关于iOS XMPP 从不接收任何好友/名册请求的主要内容,如果未能解决你的问题,请参考以下文章
XMPPFramework - 如何接收名册的存在信息以及名册列表?