Android
Firebase
FirebaseCloudMessaging

FirebaseInstanceIdServiceがDeprecatedになった件

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