我使用此代码发送朋友/名单请求:
[[[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
问题是,一旦发送请求,这些方法都不会被调用。
从任一设备发送都不会成功。
我可以确认好友请求已发送,因为它在ejabberd管理面板中可见。此外,如果从管理面板添加用户,则客户端没有任何事情发生(应该接收请求的那个,即。)。
答案 0 :(得分:2)
未调用方法- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence
或- (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence
,因为您未发送任何XMPPPresence
。