我正在为我的聊天应用程序使用 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());
ionic /xep-0199.html
关于android - 发件人离线时如何发送XMPP消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325993/