Flutter Android Firebase通知Release模式无法接收问题求助
排查Release模式下FCM通知接收失败的可能遗漏点
以下是针对你问题的几个关键排查方向:
核对Google Play应用签名的SHA1证书
如果你启用了Google Play App Signing,Firebase后台需要添加的是Play控制台「应用签名」页面里的应用签名证书SHA1和上传证书SHA1,而非你本地用于签名APK的密钥SHA1。确认这两个SHA1都已正确添加到Firebase对应应用的设置中。确保google-services.json生效于Release构建
即使你下载了新的配置文件,也要检查:- 它是否替换了项目
app目录下的旧文件 - 构建脚本(如gradle)中是否没有针对Release模式指定旧的配置路径
- 打包Release APK/AAB时,是否确实打包了最新的google-services.json
- 它是否替换了项目
添加FCM相关的ProGuard/R8混淆规则
Release模式下的代码混淆可能破坏FCM的核心类,导致无法接收通知。在proguard-rules.pro中添加以下规则:-keep class com.google.firebase.messaging.** { *; } -keep class com.google.firebase.iid.** { *; } -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { public static final *** NULL; } -keepnames class com.google.android.gms.common.internal.safeparcel.SafeParcelable -keepnames @com.google.android.gms.common.annotation.KeepName class * -keepclassmembers class * { @com.google.android.gms.common.annotation.KeepName *; }确认通知渠道配置
Android 8.0及以上版本必须创建通知渠道才能显示通知。检查你的Release版本是否在启动时正确初始化了通知渠道,并且AndroidManifest.xml中指定了默认渠道ID:<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />验证FCM Token的环境一致性
Debug和Release版本的应用会生成不同的FCM Token,确认后端发送通知时使用的是Release版本应用获取的Token,而非Debug环境的Token。检查Firebase API密钥的限制规则
确认Firebase中自动创建的Android API密钥的限制是否正确:- 包名必须与Play控制台的应用包名完全一致(大小写敏感)
- 已添加所有必要的SHA1证书(应用签名、上传证书、本地调试证书)
内容的提问来源于stack exchange,提问作者hkmbkjkj
相关产品推荐
相关产品推荐

