android - 发件人离线时如何发送XMPP消息?

标签 android xmpp offline asmack sender

我正在为我的聊天应用程序使用 aSmack 和 Openfire。我能够很好地发送和接收消息。 Openfire 支持在收件人离线时进行离线消息传输,方法是保持消息直到他上线。

但是当发件人离线或他的互联网在通信之间掉线时该怎么办?

aSmack/Smack 是否提供任何 api 来保持消息直到互联网恢复?

或者我应该通过 SQLite 发送消息吗?

最佳答案

如果您连接到 openfire 并且互联网关闭,那么您仍然在 openfire 上在线,因为如果互联网关闭,您将无法更改在线状态。

对于这个 openfire 使用 http://xmpp.org/extensions/xep-0199.html

如果用户应用程序未回复 ping 请求,则 openfire 使其离线并开始离线存储。

要在 asmack 中获取离线消息,您需要添加以下提供程序。添加这些后,如果服务器启用了它们,您将获得离线消息

pm.addIQProvider("offline", "http://jabber.org/protocol/offline",
                new OfflineMessageRequest.Provider());
        // Offline Message Indicator
        pm.addExtensionProvider("offline",
                "http://jabber.org/protocol/offline",
                new OfflineMessageInfo.Provider());

enter image description here ionic /xep-0199.html

关于android - 发件人离线时如何发送XMPP消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325993/

相关文章:

java - 如何将键转换为字符串,反之亦然

带有 Socket.io 模块的 Node.js 与 XMPP - 优点和缺点

python - 离线安装python & pip

ios - 在 IOS 中离线时保持登录销售团队

grails - 如何在 grails View /站点中自动更新/刷新?

postgresql - 将 UUID 插入由客户端应用程序生成的 Postgres 是否合法?

java.lang.NullPointerException : Attempt to invoke virtual method 'android.view.View .MainActivity.findViewById(int)' on a null object reference 异常

android - Android 中 TextView、EditText 和按钮的小型大写字母

android - Xamarin : Out of memory issue

ios - 如何检测用户正在输入消息?