Android アプリで aSmack を使用して、Desktop-Jabber-client からメッセージを受信しています。これは正常に機能し、(接続が適切に閉じられた後) Android 携帯がオフラインであっても、次回のログイン後にオフライン メッセージを受信します。
しかし、電話で機内モードに入るか、電話をシャットダウンして接続が突然閉じられるようにすると (オブジェクトを呼び出すことなくdisconnect()
) Connection
、電話は Desktop-Jabber-client の連絡先リストで「オンライン」のままになります。 while と i にメッセージを送信できます。ただし、これらのメッセージは届きません。電話がサーバーに再度ログインしても。これらのメッセージは失われます。
この問題を解決する方法を知っている人はいますか? チャットでメッセージを失うことはありません。:)
編集: テストコード
BroadcastReceiver を追加: http://pastebin.com/cFLzGXgy
サービス: http://pastebin.com/wLpQCQfT
1 つ目は、電話がネットワークに接続されるたびにサービス (2 番目の URL) を開始する BroadcastReceiver です。
PS: これは単なるテスト コードです。使用/テストする場合は、サーバー/ユーザー名/パスワードを変更する必要があります。