我正在为 IOS 和 Android 使用 ejabberd 服务器开发一个聊天应用程序。我还为 ejabberd 编写了一个模块来获取发送到我自己的服务器 api 的离线消息。
我自己的服务器 api 将使用 FCM 向 IOS/Android 平台发送通知。
在客户端,如果应用程序在前台或后台,它将保持与 ejabberd 的连接,如果客户端收到消息,则 ejabberd 将发送消息传递状态。
我在应用程序终止(服务未运行)时遇到问题,这意味着它没有连接到 ejabberd(离线)。如果我在此应用程序未终止的情况下向它发送消息,它将收到通知,但消息仍未送达。在应用程序终止时收到通知时如何将消息标记为已送达。
为了进一步解释,whatsapp 可以正常使用相同的功能:
- 设备 A 已安装 whatsapp 并且 whatsapp 已关闭(终止)
- 设备 B 正在运行 whatsapp
- 设备 B 向设备 A 发送消息
- 设备 A 收到 whatsapp 通知
- 在设备 A 上不做任何事情,设备 B 上的消息状态被标记为已传递。
如何使用 ejabberd 实现此场景?