現在進行形で格闘中のアプリの修正の中で、解決したものがあったのでそれをご紹介。
タイトル通り、「cordova-plugin-fcm」で端末の一意のトークンを取得する getToken() で、なぜか取得した値が null になる時の対処法です。
他にも同じエラーに悩んでいる人はいたようだったので、ある程度簡単に情報はヒットしました。
で、今回参考にしたサイトはこちら。
getToken() returns ‘null’ only after install・Issues #104・fechanique/cordova-plugin-fcm・GitHub
https://github.com/fechanique/cordova-plugin-fcm/issues/104
解決策としましては、もしトークンが取得できなかった場合は、onTokenRefresh() を使って、トークンを再取得しなおす方法が良いとのこと。
実際のコードはこちら。
FCMPlugin.getToken(
(token) => {
if(token == null){
FCMPlugin.onTokenRefresh(function(token){
// onTokenRefresh() でトークンを取得時の処理
});
} else {
// getToken() でトークンを取得した時の処理
}
},
(err) => {
// エラー時の処理
}
);
こんな感じです。
もし、getToken() で取得したトークンが null だったら、onTokenRefresh() でトークンを再取得しています。
現時点では、問題なくトークンが取得できました!
取得できたトークンはデータベースに保存なりして、プッシュ通知の送付に使います。
…が、なぜか今度はプッシュ通知が送れず…。
Androidだと、上記のトークンが取得できない問題もなく、あっさりとプッシュ通知送付まで実装できたのですが、まさかiOSでつまづくとは…。
一難去ってまた一難という感じですが…引き続き頑張ります。
ということで、cordova-plugin-fcm プラグインでトークンが取得できない時の対処法でした。
同じことにお困りの方は、是非お試しください。