首页 > 解决方案 > 在 IOS 中使用 MucSub 获取 MUC 消息历史记录

问题描述

每次登录应用程序或重新安装应用程序时,我都没有收到群组消息历史记录。我在 MUC for iOS 中搜索了很多消息存档。尽管我在 YML 文件中配置了设置,如附图中所述,但 Ejabberd 并未向我提供该组的旧消息。在此处输入图像描述我保持历史记录大小为 10。这意味着每次登录应用程序或重新安装应用程序时必须获取至少 10 条消息,但重新安装应用程序后每次都无法收到 10 条消息。我正在使用 Robbiehanson/XMPPFramework for iOS 来实现基于 XMPP 的聊天。我还执行了基于 MucSub 的 MUC 来发送/接收消息。

我执行的场景:我是一个 MUC 小组的一员。相关组的成员向该组发送了 15 条消息。当我在线时,我收到了所有这些消息。现在我从组中注销。从设备中删除应用程序并使用相同的登录凭据将其重新安装到设备中。此时我看不到我之前收到的 15 条消息。在这里,即使在将应用程序重新安装到 iOS 设备后,我也希望获得所有 15 条消息。

我搜索了各种堆栈溢出问题,但没有一个对我有帮助。您的帮助将不胜感激。

标签: iosxmppejabberdxmppframeworkmultiuserchat

解决方案


也许您可以尝试通过指定带有maxstanzas的历史元素来加入房间。

我们有类似的情况,比如我们在加入房间时需要最近 3 个月的历史,所以我们在历史标签中提到了这一点,就像下面的代码示例

let historyElement = DDXMLElement(name: "history")
historyElement.addAttribute(withName: "since", stringValue: ((lastDate as NSDate).addingTimeInterval(1).xmppDateTimeString())!)
room.join(usingNickname: userJidString, history: historyElement)

推荐阅读