10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FCM で FirebaseInstanceIdService の Deprecated を解消する

Posted at

はじめに

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
}
10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?