ios - 获取 XMPP 聊天记录 OpenFire

标签 ios swift xmpp openfire xmppframework

我正在尝试使用 OpenFire 服务器在 iOS 中使用 XMPPFramework 实现聊天应用程序。我的聊天工作正常,我正在尝试从服务器检索聊天记录。当然,我在服务器上启用了消息存档。这是我发送的请求

<iq type="get">
   <retrieve xmlns="urn:xmpp:archive" with="dev_user80@mydomain">
       <set xmlns="http://jabber.org/protocol/rsm">
           <max>100</max>
       </set>
   </retrieve>
</iq>

这是我得到的回应。

<iq xmlns="jabber:client" type="error" to="dev_user103@mydomain/6i0qoo9tek">
    <retrieve xmlns="urn:xmpp:archive" with="dev_user80@mydomain">
        <set xmlns="http://jabber.org/protocol/rsm">
            <max>100</max>
        </set>
    </retrieve>
    <error code="503" type="cancel">
        <service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
        </service-unavailable>
    </error>
</iq>

我已经遍历了所有可以在互联网上找到的解决方案,但找不到令人满意的解决方案

最佳答案

urn:xmpp:archive 更改为 urn:xmpp:archive:auto

我遇到了同样的问题并通过运行发现请求确定了这一点:http://xmpp.org/extensions/xep-0136.html#disco

我发送了这个 IQ:

<iq from='user@mydomain.com'
    id='disco1' 
    to='mydomain.com'
    type='get'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

我启用了监控插件的 Openfire 服务器返回了这个结果:

<iq xmlns="jabber:client" type="result" id="disco1" from="mydomain.com" to="user@mydomain.com/resource">
   <query xmlns="http://jabber.org/protocol/disco#info">
      <identity category="server" name="Openfire Server" type="im" />
      <identity category="pubsub" type="pep" />
      <feature var="http://jabber.org/protocol/pubsub#retrieve-default" />
      <feature var="http://jabber.org/protocol/pubsub#purge-nodes" />
      <feature var="vcard-temp" />
      <feature var="http://jabber.org/protocol/pubsub#subscribe" />
      <feature var="http://jabber.org/protocol/pubsub#subscription-options" />
      <feature var="http://jabber.org/protocol/pubsub#create-nodes" />
      <feature var="http://jabber.org/protocol/pubsub#outcast-affiliation" />
      <feature var="msgoffline" />
      <feature var="http://jabber.org/protocol/pubsub#get-pending" />
      <feature var="http://jabber.org/protocol/pubsub#multi-subscribe" />
      <feature var="http://jabber.org/protocol/pubsub#presence-notifications" />
      <feature var="urn:xmpp:ping" />
      <feature var="jabber:iq:register" />
      <feature var="http://jabber.org/protocol/pubsub#delete-nodes" />
      <feature var="http://jabber.org/protocol/pubsub#config-node" />
      <feature var="urn:xmpp:archive:manage" />
      <feature var="http://jabber.org/protocol/pubsub#retrieve-items" />
      <feature var="http://jabber.org/protocol/pubsub#auto-create" />
      <feature var="http://jabber.org/protocol/disco#items" />
      <feature var="http://jabber.org/protocol/pubsub#item-ids" />
      <feature var="http://jabber.org/protocol/pubsub#meta-data" />
      <feature var="urn:xmpp:mam:0" />
      <feature var="jabber:iq:roster" />
      <feature var="http://jabber.org/protocol/pubsub#instant-nodes" />
      <feature var="http://jabber.org/protocol/pubsub#modify-affiliations" />
      <feature var="http://jabber.org/protocol/pubsub#persistent-items" />
      <feature var="http://jabber.org/protocol/pubsub#create-and-configure" />
      <feature var="http://jabber.org/protocol/pubsub" />
      <feature var="http://jabber.org/protocol/pubsub#publisher-affiliation" />
      <feature var="http://jabber.org/protocol/pubsub#access-open" />
      <feature var="http://jabber.org/protocol/pubsub#retrieve-affiliations" />
      <feature var="jabber:iq:version" />
      <feature var="http://jabber.org/protocol/pubsub#retract-items" />
      <feature var="urn:xmpp:time" />
      <feature var="http://jabber.org/protocol/pubsub#manage-subscriptions" />
      <feature var="jabber:iq:privacy" />
      <feature var="jabber:iq:last" />
      <feature var="http://jabber.org/protocol/commands" />
      <feature var="http://jabber.org/protocol/offline" />
      <feature var="urn:xmpp:carbons:2" />
      <feature var="http://jabber.org/protocol/address" />
      <feature var="http://jabber.org/protocol/pubsub#publish" />
      <feature var="http://jabber.org/protocol/pubsub#collections" />
      <feature var="http://jabber.org/protocol/pubsub#retrieve-subscriptions" />
      <feature var="urn:xmpp:archive:auto" />
      <feature var="http://jabber.org/protocol/disco#info" />
      <feature var="jabber:iq:private" />
      <feature var="http://jabber.org/protocol/rsm" />
   </query>
</iq>

可以看到支持自动归档(urn:xmpp:archive:auto)和归档管理(urn:xmpp:archive:manage),但是支持手动归档(urn:xmpp:archive:manual) 和存档首选项 (urn:xmpp:archive:pref) 不是。

XEP-0313 也受支持(列为 urn:xmpp:mam:0)并且可以检索存档消息:http://xmpp.org/extensions/xep-0313.html

关于ios - 获取 XMPP 聊天记录 OpenFire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35935397/

相关文章:

ios - 是否可以从 Interface Builder 设置 MDC Collection View Cell?

swift 2.0 : 'enumerate' is unavailable: call the 'enumerate()' method on the sequence

xmpp - xmpp 书签的自动加入选项不起作用

android - 使用 Smack Api for Android 发送和接收消息

ios - iPhone-XMPP离线消息时间戳导致聊天列表困惑

ios - Cordova/Phonegap 文件传输 iOS 错误 1

ios - 有时无法加载激励视频广告

ios - 以编程方式加载自定义 uiView,就像它们是单元格一样?

ios - 弹性布局不适用于 subview Controller

swift - 有没有办法判断惰性变量是否已初始化?