web-dev-qa-db-ja.com

アプリが削除されてから再インストールされたときのiOSプッシュ通知の動作

アプリが削除されてから再インストールされたときに、ユーザーが引き続き通知を受信するという異常なシナリオに遭遇しました。シナリオは次のとおりです。

  • ユーザーがアプリストアからアプリをインストールする
  • ユーザーがアプリにログオンし、通知用に登録します
  • ユーザーがデバイスからアプリを削除する
  • ユーザーがアプリストアからアプリを再インストールします
  • ユーザーは、アプリをまだ起動していない、ログインしていないなどの理由で通知を受け取ります

APNsアーキテクチャについての私の理解は、アプリがデバイスから削除されると、OS自体によってAPNから登録解除されるというものでした。アプリを再インストールしても、「registerForRemoteNotificationTypes」を呼び出すまで通知が再度有効になりません。したがって、古いトークンを使用してメモがデバイスに送信された場合、上記のメソッドが呼び出されていないため、APNは通知を配信しません。

それは正確ではありませんか?

21
Vickram

トークンは同じままです。これは、デバイス上のすべてのアプリケーションで同じです。 OSのバージョンを変更した場合にのみ変更されます。しかし、それでもあなたが遭遇した奇妙な行動を説明することはできません。

Appleがアプリケーションがデバイスからアンインストールされたことを識別した後でのみ(通常、デバイスがアンインストールした後に特定のデバイス上のアプリに通知を送信したときに発生します)、それが解除されると思います。アプリを登録します。アンインストールしてから新規インストールするまでの間に、アプリをアンインストールしたデバイス上のアプリに通知が送信されなかった場合、Appleデバイスがアンインストールされたことを知りません。アプリ、したがって、それはまだAPNSに登録されています。

フィードバックサービスの動作は私の理論をサポートしています。アプリをアンインストールしてフィードバックサービスを呼び出すと、アプリをアンインストールしたデバイスのデバイストークンを取得できません。そのデバイスに通知を送信しようとした後でのみ、Appleはアンインストールを検出し、フィードバックサービスでそのデバイストークンを返します。

最後に追加する必要があるのは、アンインストールされたアプリがプッシュ通知に登録されたデバイス上の最後のアプリである場合、APNサービスはアプリがアンインストールされたことを認識しないため、再インストール後もAPNに登録されます。インストールされています。

21
Eran

アプリを削除しても、OSはアプリをAPNSから「登録解除」しません。アプリを「登録解除」するには、アプリを削除したデバイスに通知を送信する必要があります。これには、アプリが削除されたことがわかるまで、APNSから数回の試行が必要になる場合があります。

10
GabCas