Flutter Cloud Messaging无法向持有token的设备发送消息
Firebase FCM debug正常、release模式无法接收消息解决方案
- 校验Release包签名指纹
- debug模式默认使用本地
debug.keystore的签名指纹,release包使用独立的发布签名文件,二者指纹不匹配会导致Firebase拒绝release包的FCM请求。需要将release签名对应的SHA-1、SHA-256指纹添加到Firebase控制台项目设置的对应应用配置中,重新下载google-services.json(Android)或GoogleService-Info.plist(iOS)替换到项目工程后重打release包。
- debug模式默认使用本地
- 检查代码混淆/裁剪配置
- Android端如果release模式开启了
minifyEnabled true或shrinkResources true,需要在proguard-rules.pro中添加FCM专属混淆规则,避免相关类被误裁剪:
-keep class com.google.firebase.messaging.** { *; } -keep class com.google.android.gms.common.** { *; }- iOS端需要确认Push Notifications、Background Modes下的Remote notifications能力,在release编译配置下也处于开启状态,不要仅配置debug模式。
- Android端如果release模式开启了
- 确认测试使用的Token对应release包
- 不同签名、不同编译配置的应用生成的FCM Token完全独立,不要使用debug模式下获取的Token给release包发测试消息,打release包后先打印获取到的最新Token,再用该Token到Firebase控制台发测试消息验证。
- 检查通知权限授权状态
- 大部分移动端系统会默认拦截未主动申请通知权限的应用的推送,需要确认release包启动后已主动申请通知动态权限,且用户已完成授权。
内容的提问来源于stack exchange,提问作者erdemsword
相关产品推荐
相关产品推荐

