我正在尝试实现XMPPStream类的一些委托方法,其中一个是xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence
。我注册了两个用户,两个用户都订阅了对方的状态通知。我注意到的一点是,只有在用户授权时才会调用didReceivePresence
方法。断开和/或连接用户不会向用户通知它。当我订阅的某人离线/在线时,我该怎么做才能收到通知?
我用来向XMPPStream发送状态的代码是:
- (void) goOnline
{
XMPPPresence *presence = [XMPPPresence presence];
[_stream sendElement:presence];
}
- (void) goOffline
{
XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];
[_stream sendElement:presence];
}
答案 0 :(得分:2)
实际上我的设置是正确的,但我没有订阅用户的在线状态通知,我想如果他在我的名单中,我会自动收到此通知。不要忘记您必须使用acceptPresenceSubscriptionRequestFrom
方法接受在线订阅请求。
如果您收到订阅请求,则会自动将该用户添加到您的名单中,并将您添加到他的名单中,但在您不接受订阅请求之前,您都不会收到状态消息。