使用适用于 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 服务器

适用于 Windows Phone 8.1 的 XMPP 库

使用适用于 Arduino 的 Arduino / XMPP 客户端进行家庭自动化