You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中获取Firebase Cloud Messaging Android设备令牌异常求助

问题原因及解决方法

你调用的FirebaseInstallations.getInstance().id获取的是Firebase安装ID,并非FCM推送所需的设备令牌,这就是你拿到短字符串且无法接收通知的核心原因。

正确获取FCM设备令牌的代码

使用FirebaseMessaging的API来获取令牌:

FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val fcmToken = task.result
        if (fcmToken != null && userID != null) {
            Log.d("FCM Token ---->>", fcmToken)
            // 将令牌保存到你的后端服务器
        } else {
            Log.e("FCM Token", "令牌为空或用户ID未设置")
        }
    } else {
        Log.e("FCM Token", "获取失败", task.exception)
    }
}

额外注意事项

  • 确保项目已添加FCM依赖(在app模块的build.gradle中):
    implementation 'com.google.firebase:firebase-messaging:23.4.1' // 建议使用最新版本
    
  • 监听令牌更新:FCM令牌可能因应用重装、数据清除等场景变化,需通过自定义FirebaseMessagingService监听:
    class MyFirebaseMessagingService : FirebaseMessagingService() {
        override fun onNewToken(token: String) {
            super.onNewToken(token)
            // 更新新令牌到服务器
            Log.d("New FCM Token", token)
        }
    }
    
    并在AndroidManifest.xml中注册该服务:
    <service
        android:name=".MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    

内容的提问来源于stack exchange,提问作者Sam Chahine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:27:23