場合はこれです:デバイストークンが変更された場合、複数のデバイス(1人のユーザーに属する)にプッシュ通知を送信する方法
- 自分のiPhone A
- 、データベース内の自分のiPhone B 今
、上の同じアプリにユーザがログイン時にアプリにログインします1人のユーザーに対して2つのトークンがあり、それは正しいです。
+---------+-------------------+
| user_id | device_token |
+---------+-------------------+
| 1 | 1st_device_token1 |
| 1 | 2nd_device_token1 |
+---------+-------------------+
言うが、そのユーザが(両方のデバイス上で)それを再度インストールし、アプリケーションを削除したことを意味し、のAPNのトークンは、従って、私達のデータベースでは、変更され、4つのユニークなトークンがあります。
+---------+-----------------------+
| user_id | device_token |
+---------+-----------------------+
| 1 | 1st_device_token1 |
| 1 | 2nd_device_token1 |
| 1 | 1st_device_token1_new |
| 1 | 2nd_device_token1_new |
+---------+-----------------------+
ここで、そのユーザーのプッシュ通知は、4つのデバイス(4つのトークン)に送信されます。 アプリを削除してインストールしている場合(起こっている可能性があります:)、データベース内に1人のユーザーに大量のトークンがあり、そのような膨大な数のデバイスがあると思いますが、実際には無効なトークンがたくさんあります。
これを防止する方法は?
プッシュサーバーからのフィードバック情報は歴史的に非常に良いことはありませんが、現在はかなり改善されていると思います。プッシュトークンが無効であるかどうか、またはプッシュを配信できない場合の情報が含まれるかどうかを確認するために、プッシュを送信するときにサーバーが返す情報に関する最新のドキュメントを確認しましたか?しかし、とにかく、これはむしろエッジケースではありません。可能であれば、実際に何度もアプリを削除して再インストールする人は、データベースの膨大な数のエントリにつながるでしょうか? – Gruntcakes