Help us understand the problem. What is going on with this article?

FCM で FirebaseInstanceIdService の Deprecated を解消する

More than 1 year has passed since last update.

はじめに

FCMのバージョンを 17.1.0 に上げてから、以下の部分がDeprecatedで警告が出るようになりました。

MyFirebaseInstanceIDService.kt
class MyFirebaseInstanceIdService : FirebaseInstanceIdService() {
    override fun onTokenRefresh() {
        val token = FirebaseInstanceId.getInstance().token
        // トークンをサーバに送る処理など
    }
}

理由としては、バージョン17.1.0から FirebaseInstanceIdService のクラス自体がDeprecatedなったからです。
その代わりに、 FirebaseMessagingService にonNewTokenメソッドが追加されました。
このDeprecatedを解消した手順を書きます。

手順

1. FirebaseInstanceIdService の使用箇所を削除

以下の行を削除。

AndroidManifest.xml
<service
    android:name=".MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>

以下のファイルを削除。

MyFirebaseInstanceIDService.kt
class MyFirebaseInstanceIdService : FirebaseInstanceIdService() {
    override fun onTokenRefresh() {
        val token = FirebaseInstanceId.getInstance().token
        // トークンをサーバに送る処理など
    }
}

2. FirebaseMessagingService で新しいトークンを取得するように修正

FirebaseMessagingService のonNewTokenメソッドを追加。
FirebaseMessagingService を継承したクラスがない場合は、新規で作成。

MyFirebaseMessagingService.kt
class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onNewToken(token: String?) {
        // トークンをサーバに送る処理など
    }
}

新規で作成する場合は、以下の記述も追加。

AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

3. 上記以外で、トークンを取得している部分を修正

FirebaseInstanceIdを使って、トークン取得している部分を変える

Before

val token = FirebaseInstanceId.getInstance().token

After

FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener { result ->
    val token = result.token
}
taki4227
中小企業のSIer、ベンチャー企業を経て、今はSHOWROOMのエンジニアをしています。Android・iOS・Flutterでアプリ開発をしてきました。良いものを作って届けたい、良いものを作ることに携わりたい。
https://note.com/taki4227
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした