7

我是 XMPP 的新手。我在 android 上使用 smack 在我的应用程序中提供聊天。

在 smack 4.1 中,添加了对流管理的支持,所以我使用了

  XMPPTCPConnection.setUseStreamManagementDefault(true);

启用此功能,我得到:

03-27 00:50:54.945: D/SMACK(16991): SENT (5): <enable xmlns='urn:xmpp:sm:3' resume='true'/>
03-27 00:50:55.740: D/SMACK(16991): RECV (5): <enabled xmlns='urn:xmpp:sm:3' id='g2gCbQAAAAVTbWFja2gDYgAABZNiAAYRuGIAAW06' resume='true' max='300'/>

因此,XEP 198 在我的客户端和服务器(ejabberd 15)上都可以正常工作。

但是我的问题是-> 我是否必须编写自己的代码来将消息(服务器未确认)存储到我的 android sqlite 数据库中,并chat.sendMessage();在重新连接时手动重新发送它们?还是这个重新发送部分是由 Smack 自己完成的?

我没有得到任何关于在 smack 4.1 上使用 XEP 198 的文档,除了 XMPPTCPConnection.setUseStreamManagementDefault(true);

smack 是否有任何方法可用于收听<a/>从服务器接收到的信息?

我看过yaxim的源代码,但似乎他们已经编写了自己的代码(通过发送数据包)来支持现在在 Smack 4.1 中完成的 XEP 198。

请帮我解决启用此支持后我应该做什么?

4

1 回答 1

6
  1. 当然,您需要存储待处理的消息并在连接恢复时重新发送它们。
  2. 我们有一种方法来收听消息确认。看看这个,https://stackoverflow.com/a/372​​89804/4085494
于 2016-05-18T03:45:04.553 回答