Firebase Cloud Messaging异常message_id问题解析与修复方法
关于FCM返回的message_id差异及收不到通知的解决方案
首先得明确:你看到的两种message_id都不是异常,只是FCM针对不同场景返回的格式差异而已,先给你拆解清楚:
两种message_id的含义差异
- 带
%的格式(比如0:1593443824341654%c4860296c4860296):这是FCM给Android设备返回的标准消息ID格式,结构是[时间戳]%[设备实例ID]。其中时间戳是消息被FCM服务器处理的时间,后面的串是你之前旧Firebase实例关联的设备唯一标识——虽然你删除了旧实例,但FCM服务器可能还保留了这个关联记录,所以返回了这种格式。 - 纯数字格式(比如
1593203838780899):这种一般是FCM给iOS设备或者旧版接口返回的简化格式,本质上和带%的ID一样,都是用来标识一条成功发送的消息。
关键是你当前的返回里success: 1已经说明消息已经成功发送到FCM服务器了,收不到通知的问题和message_id格式无关,问题出在设备端的推送接收环节。
为什么删除Firebase实例换新token后收不到通知?
大概率是以下几个原因:
- 新token与设备推送通道未正确关联:删除旧Firebase实例后,设备上的FCM服务可能还缓存了旧的实例信息,导致新生成的token没有正确绑定到设备的推送通道,消息到了FCM服务器却找不到正确的设备路径。
- 通知渠道丢失(Android 8.0+):Android 8.0及以上要求必须创建通知渠道才能显示通知,删除Firebase实例可能连带清除了之前创建的渠道,即使消息到达设备,也没有渠道用来显示通知。
- 设备端权限或接收逻辑问题:比如Android 13+需要重新申请
POST_NOTIFICATIONS权限,或者你的自定义FirebaseMessagingService没有正确处理新token对应的消息,比如漏写了显示通知的代码。
具体解决步骤
- 第一步:用Firebase控制台验证新token
直接去Firebase控制台的「云消息传递」工具,输入你的新token发送测试通知。如果控制台能收到,说明token有效,问题出在你服务器的推送参数上;如果控制台也收不到,那就是设备端的问题。 - 第二步:清理设备端FCM缓存
打开设备的应用设置→存储→清除应用缓存(别清除数据,避免用户数据丢失),然后重启应用,让FCM重新初始化实例和token,刷新关联关系。 - 第三步:重建通知渠道(Android)
在你的FirebaseMessagingService的onNewToken方法里,添加创建通知渠道的代码,确保每次获取新token时都能保证渠道存在。示例代码:private fun createNotificationChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channel = NotificationChannel( "your_channel_id", "Your Channel Name", NotificationManager.IMPORTANCE_HIGH ).apply { description = "Your Channel Description" } val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } } - 第四步:检查服务器推送参数
对比Firebase控制台发送的请求参数和你服务器的请求,确保:- Android设备要设置
priority: "high"(如果需要即时推送) - 包含
notification字段(让系统自动显示通知),或者data字段(自己处理显示) - 没有错误设置
registration_ids或者to参数(确保用的是最新的token)
- Android设备要设置
- 第五步:检查接收逻辑和权限
确认FirebaseMessagingService的onMessageReceived方法能被触发,并且正确构建了通知;Android 13+要在应用启动时申请POST_NOTIFICATIONS权限。
总结一下:你的返回结果其实是正常的,message_id格式差异只是FCM的不同返回规范,重点排查设备端的推送关联、通知渠道和接收逻辑,以及服务器的推送参数。
内容的提问来源于stack exchange,提问作者mcphersonjr
相关产品推荐
相关产品推荐

