アプリでプッシュ通知を使用しています。すべて順調です。
サーバーから送信されたメッセージがアプリ側で受信されない場合があります。
この状況では、配信するメッセージが不足していることを知る必要があります(アプリは受信しませんでした)。
アプリが受信したメッセージとそうでないメッセージをサーバー側から知る方法はありますか?
Appleは次のことを教えません。
一方、ユーザーがプッシュ通知を選択した場合、アプリはこれを処理できますが、ある程度は次のようになります。
基本的に、-didReceiveRemoteNotification:
と-didFinishLaunchingWithOptions:
にロジックを追加してサーバーに接続し、メッセージが受信されたことをサーバーに通知できます。
特定の時間枠内に受信されなかった場合は、再送信できます。
しかし、ご覧のようにこれにより、無害なユーザーに同じプッシュ通知が殺到する可能性があります。
ある意味、彼にあなたの愚かなプッシュ通知をタップするように嫌がらせをすると、アプリのプッシュ通知を完全にオフにする可能性がありますが、ほとんどの場合、彼はアプリを削除し、評価を低くすることさえありますか?
正しくお応えします。
とにかく、これを続行する場合、一意のmessage identifier
をPush通知のペイロードに挿入する識別パターンを実装する必要があり、アプリがこのPush通知を受け取ったときに、このmessage identifier
をサーバーに送信する必要があります。
サーバーは、特定のデバイストークンがmessage identifier
を返したことをログに記録する必要があります。これは、その特定のプッシュ通知を受け取ったことを意味します。
サーバーは1時間ごと、毎日、または何にでもチェックし、特定のメッセージを相対message identifier
で報告していないデバイストークンに再送信できます。
繰り返しますが、これは、サーバーが動作する必要があることを意味しますOT時々。
このアプローチ全体には他の問題があります:
アプリに、サーバーに送信されるメッセージIDをキューに入れ、サーバーが正常に応答した場合にのみそれを削除するロジックを追加することで、最後の3つのシナリオを回避できます。
サーバー側とクライアント側の作業が多すぎます。
さらに、大量のユーザーを処理したり、アプリのパフォーマンスを少しだけ低下させたりする場合、サーバー側のパフォーマンスが大幅に低下します。
Appleプッシュ通知サービスには、失敗したプッシュ通知に関する情報を提供するフィードバックサービスが含まれています。目的のアプリがデバイスに存在しないためにプッシュ通知を配信できない場合、フィードバックサービスはそれを追加しますデバイスのトークンをリストに追加します。配信される前に期限切れになるプッシュ通知は、配信の失敗とは見なされず、フィードバックサービスに影響を与えません。この情報を使用して、配信に失敗するプッシュ通知の送信を停止することで、不要なメッセージのオーバーヘッドとシステム全体のパフォーマンスを向上させます。
フィードバックサービスを毎日クエリして、デバイストークンのリストを取得します。タイムスタンプを使用して、フィードバックエントリが生成されてからデバイストークンが再登録されていないことを確認します。再登録されていないデバイスごとに、通知の送信を停止します。 APNsは、フィードバックサービスをチェックし、デバイス上に存在しないアプリケーションにプッシュ通知を送信しないようにするための注意力についてプロバイダーを監視します。
1。デバイスにアプリケーションがインストールされているデバイスで通知が配信されない、および通知が配信される前に期限切れになるためだけに通知する場合それ以外の場合、通知は配信されません。
次に答えは
通知の有効期限が切れていて、有効なデバイスに配信されていないかどうかを確認できるサポートは提供していません。
Appleアプリがプッシュ通知を取得するかどうか)を知るためのオプション
上記のリンクのMosheの回答を参照してください。リンクが切れてしまった場合でも、今後の皆様のお役に立てるように、ここに彼の回答を掲載しております。
簡単に言えば、APNSは一方通行なので、できません。ただし、アプリは通知の受信時に任意のコードを実行できるため、これを使用して、通知を受け取ったときに自分のサーバーにhttpリクエストを送信することができます。
2。ユーザーがアプリケーションをアンインストールしたために配信されない通知を要求する場合、meda'sこの投稿で回答。
これがお役に立てば幸いです。また、私の説明について質問がある場合はお知らせください。
サーバーではなくアプリから、 "Service Extension"を使用して、プッシュjsonの少し変更を加えて、プッシュ通知の配信レポートを取得できます。 。チェックアウト このリンク 詳細な説明。