Edited at

FirebaseInstanceIdServiceがDeprecatedになった件

More than 1 year has passed since last update.


FirebaseInstanceIdServiceが非推奨に

2018/06/28にFirebaseInstanceIdServiceが非推奨になりました。

https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceIdService

firebase-messaging:17.0.0までは下記の処理でtokenを取得していました。


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
// tokenの処理
}
}

firebase-messaging:17.1.0からは新しいtokenが作成された際の処理任意のタイミングでのtokenの取得の実装方法が変わります。


新しいtokenが作成された際の処理

FirebaseMessagingServiceonNewTokenメソッドが追加されました。

FirebaseMessagingServiceを継承したクラスでonNewTokenメソッドをオーバーライドします。


AndroidManifest.xml

<service android:name=".MyFirebaseMessagingService">

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


MyFirebaseMessagingService.kt

class MyFirebaseMessagingService : FirebaseMessagingService() {

override fun onNewToken(token: String?) {
// tokenの処理
}
}


任意のタイミングでのtokenの取得

任意のタイミングでtokenを取得する際はFirebaseInstanceId.getInstance().tokenを利用していましたが、これも非推奨になりました。

tokenを取得する方法は2種類あります。

val task = FirebaseInstanceId.getInstance().instanceId

task.addOnSuccessListener { token ->
// tokenの処理
}

thread {

val senderId = "123456789012"
val token = FirebaseInstanceId.getInstance().getToken(senderId, "FCM")
}

senderIdはFirebaseのプロジェクト→設定→クラウドメッセージングの送信者IDという項目に書いてある12桁の数字です。

hoge.png