设置
我使用以下代码发送好友/花名册请求:
[[[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管理面板中看到。此外,如果用户从管理面板添加,客户端不会发生任何事情(即应接收请求的那个客户端没有反应)。
XMPPPresence *presence = [XMPPPresence presence]; [self.stream sendElement:presence];
在- (void)xmppStreamDidConnect:(XMPPStream *)sender
中发送在线状态。这是正确的做法吗? - JomanJi