使用适用于 iOS 的 XMPP 框架:当订阅者可用/不可用时接收状态
Posted
技术标签:
【中文标题】使用适用于 iOS 的 XMPP 框架:当订阅者可用/不可用时接收状态【英文标题】:Using XMPP Framework for iOS: Receiving presence when a subscriber becomes available/unavailable 【发布时间】:2013-07-25 16:05:06 【问题描述】:我正在尝试实现 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];
【问题讨论】:
【参考方案1】:实际上我的设置是正确的,但我没有订阅用户的存在通知,我想如果他在我的名单中,我会自动收到此通知。不要忘记您必须使用acceptPresenceSubscriptionRequestFrom
方法接受出席信息订阅请求。
如果您收到订阅请求,该用户会自动添加到您的名册中,并且您会添加到他的名册中,但在您不接受订阅请求之前,你们俩都不会收到状态消息。
【讨论】:
以上是关于使用适用于 iOS 的 XMPP 框架:当订阅者可用/不可用时接收状态的主要内容,如果未能解决你的问题,请参考以下文章
Mosquitto pub/sub服务实现代码浅析-主体框架
一个可作为 ReplaySubject 但仅适用于第一个订阅者的 Rx 可观察对象?
Wordpress:当用户注册时发送通知,但仅适用于具有订阅者角色的用户
无法使用 iOS 的 XMPP 框架连接亚马逊上的 ejabberd 服务器