Android端Firebase通知仅调试模式生效,运行/安装APK无法接收求助
确认Firebase控制台已添加调试版SHA-1指纹:
调试APK使用Android Studio默认调试签名密钥,需将该密钥的SHA-1指纹添加到Firebase项目设置中。可通过命令keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android获取调试SHA-1,添加后重新下载google-services.json替换项目文件并同步gradle。检查通知渠道配置:
Android 8.0及以上系统要求必须创建通知渠道才能显示通知。确保应用启动时调用NotificationManager.createNotificationChannel()方法创建对应渠道,调试模式下需保证该代码正常执行。关闭Android Studio的Instant Run功能:
Instant Run的增量编译机制可能导致FCM服务初始化异常。进入设置(Settings > Build, Execution, Deployment > Instant Run),关闭所有相关选项后重新运行应用。验证FCM相关API状态:
登录谷歌云控制台,找到对应Firebase项目的API库,确认**Cloud Messaging API (Legacy)**处于启用状态,部分调试环境依赖该API完成推送。检查设备通知权限:
Android 13及以上系统需动态申请POST_NOTIFICATIONS权限,调试时可先手动在设备设置中为应用开启通知权限,或在代码中添加权限申请逻辑。通过Logcat定位问题:
过滤FirebaseMessaging标签,查看是否有消息接收日志,或初始化失败、权限不足等错误信息。若推送控制台显示发送成功但设备无日志,需排查设备网络或FCM服务连接问题;若有日志但无通知弹出,需检查通知构建逻辑。确认测试推送的消息类型:
若发送的是数据消息,需在FirebaseMessagingService的onMessageReceived方法中自行处理并构建通知;若为显示消息,FCM SDK会自动处理,但应用在前台时默认不会弹出,需重写onMessageReceived手动触发通知显示。
内容的提问来源于stack exchange,提问作者Francisco Javier Valero Moreno

