web-dev-qa-db-ja.com

APNS(Apple Push Notification Service)の信頼性

このアプリはAPNSを使用してプッシュ通知を受信します。ただし、当社のクライアントは、一部のデバイスが通知を受信して​​いないと主張し、通知が100%配信されるように「する必要がある」と主張しています。しかし、私は somewhere を読みました。APNSは100%の信頼性がなく、通知が配信されない場合があるはずです。

APNSをいつでも確実に受信できるようにする方法については、現在パニックになっています。 ケース を読んだことがありますが、これはAPNSが配信されない場合があります(デバイスがオフラインになる場合があります)。ただし、デバイスがオンライン(Wifiまたは3G)であっても、APNSが配信されない場合があることを示すテストです。

APNSが配信しない特定のケースはありますか?または、開発者がすべての通知を確実に受信するためにコードでできることはありますか?コードで行ったことは、アプリをリモート通知に登録し、didRegisterForRemoteNotificationsWithDeviceTokenを書き込んでから、サーバーにデバイストークンをスローするだけです。

すべてのデバイスがAPNSを受信して​​いない場合、クライアントはほとんど私たちを殺すので、助けていただければ幸いです!

35
Faust V
  1. APNSはApple Serversに基づいており、Appleはメッセージ配信の成功を保証しません。
  2. 通知が届いている間にアプリが開いている(つまり、ユーザーがアプリを使用している)場合、iOSは通知メッセージを表示しません。処理する必要があります。
  3. 通知は、アプリがバックグラウンドまたは強制終了されたときにのみ表示されます。
  4. また、サーバー側にフィードバックサービスを実装します。古い不要なトークン(アプリを削除したユーザー、または設定により通知を無効にしたユーザー)を取り除くのに役立ちます。
  5. Coz APNSは1つのメッセージ/デバイスのみをキャッシュします(デバイスがオフラインの場合)。そのため、デバイスがオンラインになったときにメッセージを配信できます。ただし、メッセージがキャッシュされる期間はわかりません。

または、プッシャーを実装するだけです... http://pusher.com

45
Karthik

同じ問題に直面しています。誰もが言ったように、APNSはベストエフォートサービスであるため、すべての通知が配信されるかどうかを確認することはできませんが、どの通知を受信したかを確認することができます。これが私たちがやろうとしていることです。各通知que shipをバックエンドに登録すると、モバイルアプリは受信した各通知を報告します。次に、通知の受信を待機する最大時間を設定します。レポートを受信できない場合は、再試行します。

私はそれが誰かに役立つことを願っています(2年後でも)

8
pdaire

これは、Apple Docsで100%保証されておらず、そのように使用されるべきでもないことを明確に示しています。

3
steve

Appleのガイドラインによると、APNSは100%信頼できるサービスではありません。つまり、次のような理由でアプリがAppleサーバーからのプッシュ通知を受け取れない可能性があります。

  • デバイスはオフラインです
  • アプリはフォアグラウンド状態にあるため、プッシュ通知を管理する必要があります。

注:Apple通知サービスを使用して強制するアプリを拒否します。(アプリの1つでこれに直面しています)

詳細については、この回答をご覧ください

https://stackoverflow.com/a/25830955/3278326

0