GCMからFCMに移行しました。アンインストールを追跡するために、すべてのユーザーにサイレント通知を送信し、「NotRegistered」応答を受け取った場合、ユーザーをアンインストール済みとして扱います。過去数日以来、アプリをアンインストールしていない一部のユーザーに対して「NotRegistered」の取得を開始しました。
同じ登録トークンのFCM診断を照会すると、メッセージは配信されますが、継続的に受け入れられた状態になります。添付はスクリーンショットです。メッセージの送信中に受け取ったエラーコードは、まだ "NotRegistered"です。ユーザーはアプリをアンインストールしていません。添付のスクリーンショットです。
6月1日から6月4日までメッセージが受け入れられた状態であるため、「未登録」になります。この画像は、6月4日まで送信された通知のメッセージIDを示しています。
次の点について説明してください。
FCM登録トークンのステータスがNotRegisteredに変更された理由。先月以降アップグレードはなく、ユーザーは長い間最新バージョンを使用していますか?
FCMエラーコード「NotRegistered」のチェックは、アンインストールを追跡する完全な証拠方法ですか?利用可能なより良いメカニズムはありますか?
NotRegistered
が発生する理由に関する理由は、 docs 、3番目のケースに記載されており、あなたのケース(エンファシスマインズ)の理由として考えられます:
既存の登録トークンは、次のような多くのシナリオで無効になる場合があります。
- クライアントアプリがFCMから登録解除された場合。
- クライアントアプリが自動的に登録解除される場合、ユーザーがアプリケーションをアンインストールすると発生する可能性があります。たとえば、iOSで、APNSフィードバックサービスがAPNSトークンを無効として報告した場合。
- 登録トークンの有効期限が切れた場合(たとえば、Googleが登録トークンを更新することを決定したり、iOSデバイスのAPNSトークンの有効期限が切れたりした場合)。
- クライアントアプリは更新されたが、新しいバージョンがメッセージを受信するように構成されていない場合。
これらすべての場合において、この登録トークンをアプリサーバーから削除し、メッセージの送信に使用するのを停止します。
いや。上記でリンクしたように、NotRegistered
エラーはアンインストール中にのみトリガーされません。私の知る限り、これを行う標準的な方法はありません。 これらの投稿 のいくつかを見てください。