🎉
AndroidでFCM(Firebase Cloud Messaging)のトークンを取得する
現在のトークンを取得するには2種類の方法があります。
Javaで開発している、Kotlinを使っているがCoroutineを導入していないという場合は前者、KotlinとCoroutineを利用している場合は後者の方法がおすすめです。
コールバック
OnCompleteListenerを渡してコールバックで受け取ることができます。
FirebaseInstanceId.getInstance().instanceId
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
return@addOnCompleteListener
}
val token = task.result?.token
}
Coroutine
Kotlin Coroutineと kotlinx-coroutines-play-services
ライブラリを利用することで、Listenerを経由せず取得することが可能となります。
module/build.gradle
にdependencyを追加します。
バージョンの確認はこちら。
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$version"
}
Task
に拡張関数 suspend fun await()
が追加されています。
そのため、Coroutine Scope内で実行する必要があります。
GlobalScope.launch {
val token = FirebaseInstanceId.getInstance().instanceId.await().token
}
kotlinx-coroutines-play-services
はFCM以外でもAuthやCloud Firestoreでも利用できます。
Discussion