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

升级至最新版Firebase后,如何通过自定义FCM Sender ID获取FCM注册令牌?

我最近刚好碰到这个问题,折腾了一阵终于找到靠谱的解决办法,分享给你!

解决自定义FCM Sender ID获取注册令牌的问题

问题背景

升级到最新版Firebase后,原来通过FirebaseInstanceId.getInstance().getToken(fcmSenderId, "FCM")指定Sender ID获取令牌的方法被移除了。官方推荐的FirebaseMessaging.getInstance().token方法虽然能获取令牌,但不支持传入自定义Sender ID——如果你的项目已经配置了默认的google-services.json,但业务需要调用另一个FCM项目的服务,就会陷入困境。

核心思路:初始化多个FirebaseApp实例

Firebase允许在同一个应用中初始化多个独立的FirebaseApp实例,每个实例对应一个FCM项目。通过这种方式,我们就能分别获取不同Sender ID对应的注册令牌。

具体步骤

1. 准备第二个FCM项目的配置参数

你可以从第二个FCM项目的控制台下载对应的google-services.json,或者手动提取其中的关键参数:

  • apiKey
  • applicationId
  • projectId
  • messagingSenderId(这就是你需要的自定义Sender ID)

2. 初始化第二个FirebaseApp实例

用提取到的参数构建FirebaseOptions,然后初始化一个带有唯一名称的FirebaseApp:

// 构建第二个FCM项目的配置
val secondFcmOptions = FirebaseOptions.Builder()
    .setApiKey("你的第二个项目API_KEY")
    .setApplicationId("你的第二个项目APP_ID")
    .setProjectId("你的第二个项目PROJECT_ID")
    .setMessagingSenderId("你的自定义FCM Sender ID")
    .build()

// 初始化第二个FirebaseApp,指定唯一名称避免冲突
try {
    FirebaseApp.initializeApp(context, secondFcmOptions, "second_fcm_project")
} catch (e: IllegalStateException) {
    // 如果已经初始化过,直接获取实例即可
    FirebaseApp.getInstance("second_fcm_project")
}

3. 获取对应Sender ID的注册令牌

通过刚才初始化的FirebaseApp实例,获取对应的FirebaseMessaging,再调用令牌获取方法:

// 获取第二个FCM项目对应的FirebaseMessaging实例
val secondMessaging = FirebaseMessaging.getInstance(FirebaseApp.getInstance("second_fcm_project"))

// 获取注册令牌
secondMessaging.token.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        task.result?.let { token ->
            println("自定义Sender ID对应的令牌:$token")
            // 在这里处理你的业务逻辑
        }
    } else {
        println("获取令牌失败:${task.exception?.localizedMessage}")
    }
}

补充提示

  • 每个FirebaseApp实例必须有唯一的名称,否则会抛出初始化异常
  • 默认的FirebaseApp(通过主google-services.json初始化的)不会被影响,你可以同时使用两个实例获取不同的令牌
  • 确保第二个FCM项目的配置参数完全正确,尤其是messagingSenderId,这直接关联到你需要的Sender ID

内容的提问来源于stack exchange,提问作者Rambo's son

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:52:53