0

これは、以前の質問XMPP プッシュ通知の原因となる問題の更新です。

Mickaël Rémond からの回答のおかげで、遅延と重複の問題はなくなりましたが、プッシュ通知の動作をまだ理解できていません。

  1. アプリをバックグラウンドに移動すると (デバイスをロックしたり終了したりせずに)、プッシュ通知を受信しません。フォアグラウンドに戻すと、すべてのメッセージが完全に受信されます。

  2. アプリがフォアグラウンドでデバイスをロックすると、通知はトリガーされませんが、メッセージは完全に受信されます。

  3. アプリがバックグラウンドでデバイスをロックすると、通知がトリガーされ、メッセージは完全に受信されますが、送信後にメッセージが受信されることがありますsendLastActivityQueryToJID

ここで何が起こっているのかわかりませんが、何か知っていることがあれば教えてください。
PS i はアプリからバックグラウンド モードを削除しました。

4

1 に答える 1

1

ejabberd とは関係がないようですが、iOS でのプッシュ通知の仕組みに関連しているようです。

何をしようとしているのかよくわかりませんが、アプリのバックグラウンド モードを削除しないでください。アプリをバックグラウンド モードで短時間実行して、適切なハウスキーピング タスクを実行できるようにする必要はなく、他にも多くの利点があります。

  1. バックグラウンドのアプリは通常、強制終了されるまで 3 分間実行されます。その間、アプリ内で通常の XMPP メッセージを受信することを意味します。その状態で XMPP メッセージを受信すると、appm からのローカル通知をトリガーする必要があります。

  2. アプリがフォアグラウンドにある場合、iOS は通知を表示しません。これは予期されることです。XMPP サーバーに接続している場合は、XMPP メッセージを受信します。接続されていない場合、通知を受け取りますが、表示されません。アプリでそれらをどうするかはあなた次第です。

  3. 質問には混乱があります。アプリがバックグラウンドにある場合、通知はトリガーされますが、セッションを再度開いたり再接続したり、再接続したりするときにのみ、メッセージを同時に受信するべきではありません。メッセージを受信するためにトラフィックが必要な場合は、空白キープアライブを行っていないためです。そうしないと、サーバーは突然接続が失われたと判断し、プッシュ通知の送信とメッセージのバッファリングを開始します。ドキュメントで推奨されているように、空白キープアライブを実装していることを確認してください。そうしないと、正常に機能しません。

于 2016-01-28T22:33:40.400 に答える