質問: ### 前提 (Android+Cordova)でPush通知を受信するアプリを開発しています。 Push通知はFirebaseCloudMessagingに対して、自社サーバによるシステム(PHP)から 送信しています。 アプリによるログイン時に、トークンを自社サーバに送信しています。 ### これまでの流れ 複数の実機においてデバッグし正常に動作することを確認。 署名付きapkを作成しGooglePlayに公開。 GooglePlayからデバッグで使った各実機にインストールしてテスト中。 ### 発生している問題 一部の実機において、Push通知が受信されません。 PHPをデバッグしてみると、送信結果に Not Registered とあり失敗している模様です。 このトークンを使ってFirebaseConsoleからPush通知を送信しても、無効なトークンと 言われます。 トークンを指定せず、アプリ指定だとPush通知を受信できます。 このように一部の実機のみ、リリースしたアプリにおいて取得したばかりのトークンが 無効であるといわれます。対処をご存知の方、ヒントいただければ幸いです。
回答: トークンが取得されていませんでした。 onDeviceReadyイベント内でFCMPlugin.getToken() でトークンを取得しているのですが、 Androidのバージョンが4,5あたりの実機ではインストール後初回起動時のonDeviceReady時に getTokenがnullを返していました。以降のonDeviceReady時にはちゃんとトークンが取得されて いました。また、新しいAndroid端末なら、初回から正常にトークンが取得されています。 サーバー側ではトークンがNULLならUpdateしないというロジックになっており、前回のトークンが 残ったままになっていました。これを見て、「トークンは正常に取得されている」と勘違いしてました。 引き続き、初回のトークンがnullの場合の対処を考えたいと思います。