WhatsApp や同様のチャット アプリを観察すると、次のような動作が見られます。
- インターネット接続をオフにします (セルラーと WIFI の両方)。
- チャット アプリが (バックグラウンドで) アクティブになっていないことを確認します。
- 複数のメッセージを自分のデバイスに (他のデバイス経由で) 送信します。
- インターネットをオンにします。
- ほんの数秒で、すべてのメッセージが通知として表示されます。
試行するたびに、このシナリオを再現できます。
今、私は自分の iPhone アプリに取り組んでいますが、この動作を実装する方法がわかりません。私が理解している限り、これはいくつかの方法で実装できた可能性があります。
APNS の QoS 機能の使用:
メッセージがデバイスに配信されなかった場合、QoS がメッセージを保存し、デバイスが再接続したときにメッセージを再送信することを読みました。ただし、この解決策は次の 2 つの理由から意味がありません。
QoS は、一度に 1 つの未配信メッセージのみを保存すると言われています。しかし、私の場合、複数のメッセージが表示されます。
インターネット接続をオンにすると、メッセージは即座に表示されます。QoS のドキュメントによると、未配信のメッセージを取得するには時間がかかる場合があります。
バックグラウンド サービスを使用するか、接続の変更をリッスンする:
バックグラウンド サービスに関して、実行中のバックグラウンド サービスに最も近いのはバックグラウンド フェッチであることはわかっていますが、これも定期的なものであるため、ここには当てはまらないようです。
また、バックグラウンドで接続がいつ変更されたかを知り、いくつかのアクションを実行するために接続できるコールバックを見つけることもできませんでした。
この機能を iPhone アプリに実装する方法をご存知ですか? (QoS? 他のバックグラウンド API?)