为 iOS 实现 Ejabberd MUC Sub

Posted

技术标签:

【中文标题】为 iOS 实现 Ejabberd MUC Sub【英文标题】:Implement Ejabberd MUC Sub for iOS 【发布时间】:2017-05-11 07:41:33 【问题描述】:

我们正在实施一个聊天系统,允许用户在未连接到 MUC 组时接收消息/通知,我知道 Ejabberd 从 16.08 开始通过以下文档支持它: https://docs.ejabberd.im/developer/xmpp-clients-bots/proposed-extensions/muc-sub/#list-of-subscriptions 但是我找不到 ios 实现的任何示例 我想知道是否有人在 iOS 上实现了这个功能,或者有什么指南来实现这个

【问题讨论】:

这个有什么更新吗?我也在寻找实现这一点的方法,任何帮助将不胜感激 【参考方案1】:

将 XMPPMUCSub.h 和 .m 文件包含到您的项目中。

现在连接 xmppstream 后激活 XMPPMUCSub 服务以进行激活,使用下面的代码。

xmppMucSub = [[XMPPMUCSub alloc] initWithDispatchQueue:dispatch_get_main_queue()];
[xmppMucSub activate:xmppStream];
[xmppMucSub addDelegate:self delegateQueue:dispatch_get_main_queue()];

现在您必须为方法检查类实现 XMPPMUCSub 的委托方法并实现它。

现在,当您创建新的 xmpproom 时,您需要调用以下方法。

[xmppMucSub supportedBy:<Your xmpproom>]; 

如果服务支持则在委托方法调用下方,您需要订阅它。

- (void)xmppMUCSub:(nonnull XMPPMUCSub *)sender serviceSupportedBy:(nonnull XMPPJID *)room
    NSLog(@"serviceSupportedBy:-%@", room);
    [xmppMucSub subscribeTo:room nick:[xmppStream.myJID user] password:nil];

欲了解更多信息,请参阅下面的链接。

https://github.com/Digithurst/XMPPFramework/tree/master/Extensions/MUC-Sub

【讨论】:

欢迎提供解决方案链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的您链接到的页面的一部分,以防目标页面不可用。 Answers that are little more than a link may be deleted.

以上是关于为 iOS 实现 Ejabberd MUC Sub的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ejabberd 上为 muc(多用户聊天)设置不同的消息间隔?

集群 ejabberd 的 MUC 和 PubSub 主机

Ejabberd muc_rooms 和 muc_registered 表为空

无法从 ejabberd 列出 muc 房间

不允许任何所有者撤销创建房间/MUC 的用户的所有权 - Ejabberd XMPP

ejabberd MUC 未通知新消息