【Android】FCM導入時にFirebaseInstanceIdServiceがエラーになった時の対処法

Cordova アプリを開発中に遭遇した FCM のエラーについて。
ちょっとしたトラブルで、一度プラットフォームを削除し、cordova-plugin-fcm を再インストールしたところ、Android Studio でアプリを起動した際にエラーが発生しました。
なんでも、FirebaseInstanceIdService が廃止予定で、使用が非推奨になったためでした。

今回の修正で参考にさせていただいた記事はこちらから。

FirebaseInstanceIdServiceがDeprecatedになった件 – Qiita
https://qiita.com/keijumt/items/d45ea0da3dfa6284ad90

 

対処法としては、まず非推奨の FirebaseInstanceIdServiceFirebaseMessagingService に置き換えます。
私の環境では、別のクラスに extends で継承されていたため、こちらを下記のように書き換えました。

public class MyFirebaseInstanceIDService extends FirebaseMessagingService {
    ...
}

次に、MyFirebaseInstanceIDService クラス内で、onTokenRefresh() をオーバーライドしていたのですが、FirebaseMessagingService では、この関数のかわりに onNewToken() が用意されているので、こちらも変更します。

public class MyFirebaseInstanceIDService extends FirebaseMessagingService {
    @Override
    public void onNewToken(String old_token) {
        ...
    }
}

さらに、onNewToken()(旧 onTokenRefresh())内では、FirebaseInstanceId.getInstance().getToken() が使われていましたが、こちらも非推奨らしく、コードに打ち消し線が引かれてしまったため、併せて修正します。
と言っても、引数を追加して、try/catch で囲むだけなんですけどね。
修正後のコードは下記のとおりです。

String sender_id = [FCM の送信者ID(数字12桁)];
String refreshedToken = null;
try {
    refreshedToken = FirebaseInstanceId.getInstance().getToken(sender_id, "FCM");
} catch (IOException e) {
    e.printStackTrace();
}

修正は以上で完了です。
あとは、通常通り Build → Run を実行したところ、エラーも発生せず、問題なく起動できました。
ただ、その時は起動確認だけを行っただけなので、FCM の機能については、これから入念にチェックしたいと思います。

 

以上、FCM の FirebaseInstanceIdService がエラーになったときの対処法でした。
導入したプラグイン等については、定期的に関数の廃止などをした方が良さそうですね。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG