1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FirebaseMessagingのトークンを取得する際のエラー解消方法

Last updated at Posted at 2021-03-24

エラー

Firebaseのチュートリアルを進めていると、クライアントアプリのインスタンスの登録トークンを取得するステップにあたります。

チュートリアルでは以下の記載があります。

現在のトークンを取得する必要がある場合は、FirebaseMessaging.getInstance().getToken() を呼び出します。

同じくチュートリアルでは、kotlinの場合のコード例が紹介されています。

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

ただし、これをこのまま貼り付けると、OnCompleteListenerが未定義だのTAGが未定義だのmsg_token_fmtが未定義だの怒られてしまいます。

解決方法

これを解消するには、まず以下のようにいくつかimportします。

import android.util.Log
import com.google.firebase.messaging.FirebaseMessaging
import com.google.android.gms.tasks.OnCompleteListener

次に、変数LOGを宣言します。

var LOG = "MyLog"

ここまでをまとめると、例えばAndroidDeveloperのチュートリアルアプリを作っていた場合は、次のようになります(Toastは省略)。

MainActivity.kt
package com.example.myfirstapp

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

//いろいろimport
import android.util.Log
import com.google.firebase.messaging.FirebaseMessaging
import com.google.android.gms.tasks.OnCompleteListener

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 変数
        var TAG = "MyLog"

        // トークン
        FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "Fetching FCM registration token failed", task.exception)
                return@OnCompleteListener
            }

            // 新しい登録トークンを取得
            val token = task.result

            // ログに出力
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
        })
    }
}

また、msg_token_fmtのエラーについては、res/values/strings.xmlを開き、以下のようにします。

strings.xml
<resources>
    <string name="app_name">My First App</string>

    //これを追加
    <string name="msg_token_fmt" translatable="false">FCM registration token: %s</string>
</resources>

これで無事アプリが実行され、Logcatにトークンが出力されます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?