FirebaseInstanceIdServiceが非推奨に
2018/06/28にFirebaseInstanceIdServiceが非推奨になりました。
https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceIdService
firebase-messaging:17.0.0までは下記の処理でtokenを取得していました。
<service android:name=".MyFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
class MyFirebaseInstanceIdService : FirebaseInstanceIdService() {
override fun onTokenRefresh() {
val token = FirebaseInstanceId.getInstance().token
// tokenの処理
}
}
firebase-messaging:17.1.0からは新しいtokenが作成された際の処理と任意のタイミングでのtokenの取得の実装方法が変わります。
###新しいtokenが作成された際の処理
FirebaseMessagingServiceにonNewTokenメソッドが追加されました。
FirebaseMessagingServiceを継承したクラスでonNewTokenメソッドをオーバーライドします。
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
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桁の数字です。