【问题标题】:xmpp syncing mechanism for iOS clientiOS客户端的xmpp同步机制
【发布时间】:2014-05-13 04:04:18
【问题描述】:

我一直在使用iOS客户端https://github.com/robbiehanson/XMPPFramework
在客户端成功安装ejabberd并在服务器上启用归档模式,可以发送和接收消息。

我的问题是如何获取旧消息并同步到我的本地核心数据。我已阅读框架支持,它部分支持 XEP-0136。

我将能够从服务器创建任何自定义 API 来获取消息并在本地同步。 但我没有得到任何常见的消息 ID 等,因此我将同步。

如果有人对同步有任何想法。请告诉我。

【问题讨论】:

    标签: ios iphone xmpp xmppframework


    【解决方案1】:

    嗨,我在 (http://xmpp.org/xmpp-protocols/xmpp-extensions/) 教程中在 xmpp 中做了很多事情,您可以从下面的 github 链接中获取示例,您可以从中获得很多帮助

    (演示链接:) https://github.com/sesharim/ios-jabber-client

    https://github.com/funkyboy/Building-a-Jabber-client-for-iOS

    (xmmp 项目演示链接:)

    https://github.com/chrisballinger/ChatSecure-iOS

    希望对你有帮助..

    您可以从上面的演示程序中了解如何获取旧消息和用户列表以及其他详细信息。

    【讨论】:

    • 我已经尝试了所有三个演示项目,但没有人提供客户端注销和登录时最后一条消息的历史记录。
    • @mayank-baddi 您可以从“ChatSecure-iOS”获取该代码,了解如何将消息保存到类名为“XMPPMessageArchivingCoreDataStorage”的核心数据中,您可以从上面的项目中找到该代码而不是您的核心数据保存后,您可以从代码数据中获取.. xmpp 中的服务器端消息备份没有备份工具。
    • 我已经在服务器上启用了消息存档模式,当用户删除应用程序并再次安装时,我想从服务器获取最后一条消息并与本地同步,上面的代码可以提供吗?跨度>
    • 不,那是代码不可用...对不起老兄。
    • 您好,mitul,我将 xmppmessagearchivingstorage 设为 nil,因此无法在 coredata 中存储消息。你能指导我吗
    【解决方案2】:

    仔细阅读XEP-0136 - 它描述了如何检索现有存档。 事实上,XMPPFramework 已经实现了存储所有普通传入消息 - 您只需使用 XMPPMessageArchivingCoreDataStorage 初始化 XMPPMessageArchiving 并激活 XMPPStream 上的模块。然后您可以在[XMPPMessageArchiving mainThreadManagedObjectContext] 上执行核心数据获取请求。如果你想检索以前存档的消息 - 你应该扩展 XMPPFramework 一点:

    • 发送<list ... /> query,可选限制Result Set Management参数(XMPPFramework也支持)
    • 处理结果(根据用户 jid 和时间戳为您提供归档收藏)并通过 <retrieve ... /> 查询请求感兴趣的收藏
    • 处理结果并随结果集中的每条消息发送[XMPPMessageArchiving archiveMessage:],XMPPFramework 将为您完成剩下的工作——插入核心数据存储。

    【讨论】:

    • 查询工作正常,但 查询不工作,它总是返回错误代码 503,服务未实现。如果您有任何进一步的想法或一些演示代码,请告诉我。
    • 我记得,ejabberd 的 mod_archive 模块已过时且不受支持,可能存在错误。试试 openfire 和/或 prosody,也许有更好的实现
    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 2013-02-14
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2013-02-17
    • 2011-01-31
    相关资源
    最近更新 更多