【问题标题】:Receive offline message with XMPP使用 XMPP 接收离线消息
【发布时间】:2015-04-22 12:51:09
【问题描述】:

我正在使用XMPP 协议开发聊天应用程序。
我试过以下 this tutorial 来自 github 。一切正常使用 XMPP

但是当用户来时我无法接收离线消息 在线。
当用户 A 下线,用户 B 向用户 A 发送消息时,当用户 A 登录到应用程序时,它必须接收到所有的消息 由用户 B 在offline session 期间发送。

我如何才能收到这些离线消息?
我的应用程序完全停留在这个问题上。如果有人请帮忙 知道解决办法。任何帮助将不胜感激。谢谢

【问题讨论】:

  • 好的。我刚刚在AppDelegate 中添加了#import "XMPPMessage+XEP_0184.h",它可以工作了。
  • 你是怎么做到的?我已经添加了这个课程,但是当我重新上线时我无法接收。请帮我做这个吗?
  • 你好,我正在使用 swift 代码,我也被困在这里,任何人都可以帮助解决这个问题....
  • 有人成功了吗?
  • 如何在手机端的推送通知中即时获取离线消息?

标签: objective-c xmppframework ios8.1


【解决方案1】:

如果您使用 ejabberd XMPP 服务器,您需要在服务器上启用mod_offline

这是启用模块所需的代码:

ignore_pep_from_offline: true
max_user_offline_messages: 
admin: 5000
all: 100
mod_offline: 
access_max_user_messages: max_user_offline_messages

将此代码写入ejabberd.yml 配置文件。
当客户端离线时,它将存储每个用户收到的 100 条消息。

在客户端,您可能需要注册服务:

'http://jabber.org/protocol/disco#info'

如果你这样做了,每当离线客户端上线时,服务器都会将这些存储的消息发送到相应的客户端。

【讨论】:

    【解决方案2】:

    如果服务器支持,您必须发送请求离线消息。 XMPP 工作在 TCP 协议上,所以只要客户端启动,它就应该向服务器发送请求。

    <iq type='get'>
      <query xmlns='http://jabber.org/protocol/disco#info' 
             node='http://jabber.org/protocol/offline'/>
    </iq>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 2011-12-17
      • 1970-01-01
      • 2017-03-21
      • 2016-02-28
      • 1970-01-01
      相关资源
      最近更新 更多