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

村上 著者:村上

【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 がエラーになったときの対処法でした。
導入したプラグイン等については、定期的に関数の廃止などをした方が良さそうですね。

  • この記事いいね! (0)

著者について

村上

村上 administrator