【问题标题】:Fetching MUC Message History using MucSub in IOS在 IOS 中使用 MucSub 获取 MUC 消息历史记录
【发布时间】:2020-04-24 15:24:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios xmpp ejabberd xmppframework multiuserchat


    【解决方案1】:

    也许您可以尝试通过指定 history 元素并指定 ma​​xstanzas 来加入房间。

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

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

    【讨论】:

    • Rahul Ramchandra,感谢您的回复。在将用户的存在发送到组中时,我已经尝试过。我仅在用户收到组邀请时将用户的存在发送到组中,并且组管理功能的其余部分由 ejabberd 提供的 MusSub 管理,而我不必等待获得状态以发送/接收消息。
    • Rahul Ramchandra,问题是,我无法获取通过使用状态接收的旧消息。如果我每次在应用程序启动或重新登录时为该组发送出席信息,我必须等待获得所有组的出席信息,然后才能发送/接收消息。 MucSub 允许我发送/接收出席信息,而无需每次都为群组发送出席信息。
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 2015-10-25
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多