You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

App重启或关闭后无法接收Firebase推送,求排查指导

Firebase推送在App关闭/重启后无法接收的问题排查与原理说明

FCM推送核心原理

FCM推送分为两种核心消息类型,不同类型的处理逻辑直接影响App关闭后的接收效果:

  • 通知消息:携带notification字段的消息,由FCM系统SDK自动处理。App前台时触发onMessageReceived,后台/未启动时系统直接弹出通知。但如果App被强制关闭(从最近任务划掉),部分厂商ROM会限制FCM唤醒App,导致无法接收。
  • 数据消息:仅携带data字段的消息,所有逻辑由开发者自行处理。无论App处于前台、后台还是关闭状态,只要设备联网且FCM服务正常,都会触发onMessageReceived,但需要服务器端严格按照数据消息格式发送。

逐步排查步骤

1. 确认消息发送格式是否正确

如果你的推送仅在前台/后台生效,首先检查服务器发送的消息类型:

  • 若使用通知消息:App关闭后依赖系统处理推送,但国产ROM的后台限制会导致失效。建议改为数据消息,或同时携带notification和data字段(后台时系统显示通知,前台时进入onMessageReceived)。
  • 测试验证:用Firebase控制台发送测试消息时,选择「仅发送数据消息」,若此时App关闭后能收到并触发onMessageReceived,则说明是消息格式问题。

2. 检查Manifest配置与依赖

  • 你的服务配置中android:exported="false"是正确的,但需确认:
    • 已添加FCM核心依赖:
      implementation 'com.google.firebase:firebase-messaging:23.0.0' // 版本号以实际使用为准
      
    • 项目级build.gradle中已引入Google服务插件:
      dependencies {
          classpath 'com.google.gms:google-services:4.3.15'
      }
      
    • 没有重复注册FirebaseMessagingService的情况,确保类路径br.com.melhordosgames.apk.services.FirebaseMessagingService完全正确。

3. 处理厂商系统的后台限制

国产Android厂商(小米、华为、OPPO、vivo等)的后台管理机制会冻结被关闭的App,导致FCM无法唤醒服务,必须手动开启权限:

  • 小米:设置→应用设置→你的App→权限管理→自启动(允许);电池与性能→应用省电策略→选择「无限制」
  • 华为:设置→应用和服务→应用管理→你的App→权限→自启动(允许);电池优化→找到你的App→设置为「不允许」
  • OPPO/vivo:设置→应用管理→你的App→权限→自启动(允许);电池管理→后台高耗电(允许)

4. 验证服务唤醒与通知渠道

  • 确保在onMessageReceived中创建通知时,使用NotificationManagerCompat,并且为Android 8.0+设备正确创建通知渠道:
    private void createNotificationChannel() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel("your_channel_id", "Your Channel Name", NotificationManager.IMPORTANCE_DEFAULT);
            NotificationManager manager = getSystemService(NotificationManager.class);
            manager.createNotificationChannel(channel);
        }
    }
    
  • 重写onNewToken方法,验证服务是否能正常初始化(日志打印token,确认服务被正确注册):
    @Override
    public void onNewToken(String token) {
        Log.d("FCM_TOKEN", "Refreshed token: " + token);
    }
    

5. 测试场景注意事项

  • 手机重启后,FCM服务需要重新绑定,建议等待1-2分钟再发送测试消息,避免因服务未初始化导致的接收失败。
  • 确保设备上的Google Play服务已更新到最新版本,FCM依赖该服务运行。

内容的提问来源于stack exchange,提问作者Jasar Orion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:01:15