AndroidでFCM(Firebase Cloud Messaging)のトークンを取得する

1 min読了の目安(約1000字TECH技術記事

現在のトークンを取得するには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でも利用できます。