7

XMPPは初めてです。アプリケーションでチャットを提供するために、アンドロイドでスマックを使用しています。

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);

<a/>サーバーから受信したメッセージをリッスンするために smack から利用できる方法はありますか?

yaximのソースコードを見たことがありますが、Smack 4.1 で行われている XEP 198 をサポートするために (パケットを送信することによって) 独自のコードを作成しているようです。

このサポートを有効にした後、何をすべきか教えてください。

4

1 に答える 1

6
  1. もちろん、保留中のメッセージを保存し、接続が戻ったときに再送信する必要があります。
  2. メッセージ ack を聞く方法は 1 つあります。これをチェックしてください、https://stackoverflow.com/a/372​​89804/4085494
于 2016-05-18T03:45:04.553 に答える