iOS:XMPP:获取脱机消息

4 messaging xmpp ios xmppframework

场景:


问题:

  • 我发送给离线用户的邮件丢失了.
  • 用户在线时没有收到离线消息.
  • 在群组聊天中,它很好,因为如果用户再次加入ChatRoom,他默认接收所有消息.
  • 但在一对一聊天中,消息会丢失.

保存所有聊天记录并检索它们已经实现.我正在使用XMPPMessageArchiving&XMPPMessageArchivingCoreDataStorage实现同样的目标.

如果有人能指出我正确的方向来解决这个问题,那将是非常有帮助的.

Suh*_*hil 7

离线消息是服务器的责任.XEP-160中解释了如何处理离线消息

在客户端,您需要确保发送具有"正常"或"聊天"类型的消息节.

您还需要确保在eJabberd中启用了脱机消息存储.

上线后,您可以逐个获取所有离线消息

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message` 
Run Code Online (Sandbox Code Playgroud)

XMPPMessage将如下所示,带有延迟和时间戳标记.

<message xmlns="jabber:client" from="demo@demoHost/demoResource" to="you@demoHost" type="chat" id="234E5B61-C450-4F15-B2E6-5AF68AA8D376"><body>offline message test body</body><html xmlns="http://jabber.org/protocol/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml" style="background-color:#e9e9e9;color:#000000;"><span style="font-family: 'Helvetica';font-size: 12px;">offline message test body</span></body></html><x xmlns="jabber:x:event"><composing></composing></x><active xmlns="http://jabber.org/protocol/chatstates"></active><delay xmlns="urn:xmpp:delay" from="suhailk-imac.local" stamp="2014-09-19T10:41:50Z">Offline Storage</delay><x xmlns="jabber:x:delay" stamp="20140919T10:41:50"></x></message>
Run Code Online (Sandbox Code Playgroud)