近期FCM推送令牌长度大幅缩短且推送无法送达问题咨询
你获取到的22位字符并非FCM推送令牌,而是Firebase Installation ID(FID),该ID仅用于标识设备上的Firebase安装实例,本身长度就固定在22位左右,完全不具备推送触达能力,这就是你遇到推送无法送达问题的根本原因。
你当前的代码调用的是FirebaseInstallations.getInstance().id,这个API的返回值本身就不是推送令牌,属于API调用错误。2019年Firebase废弃了旧版的FirebaseInstanceId接口,将原接口的能力拆分到了两个不同的模块:
- 设备安装实例标识(即你现在拿到的22位FID),由
FirebaseInstallationsAPI提供 - FCM推送令牌(即你之前用到的160位左右的长串),由
FirebaseMessagingAPI提供
正确的FCM推送令牌获取代码如下:
FirebaseMessaging.getInstance().token.addOnCompleteListener { task -> if (!task.isSuccessful) { Timber.d("%s get FCM token failed", LOG_TAG) return@addOnCompleteListener } // 此处获取到的才是可以用于推送的有效令牌,长度约160位 val fcmPushToken = task.result ... }
内容的提问来源于stack exchange,提问作者Emanuel
相关产品推荐
相关产品推荐

