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

Android应用退出模式下推送通知无法接收问题排查

退出状态下FCM推送接收失败的排查方案

针对你遇到的「前台/后台推送正常,退出进程后无法接收」问题,结合setBackgroundMessageHandler()已配置的情况,整理以下排查要点:

  • 明确退出模式差异
    先区分是「仅退到后台但进程存活」还是「完全杀死进程(滑动清除)」。后者在Android/iOS上的推送机制限制更严格,需针对性排查。

  • Android端核心排查项

    • 关闭厂商电池优化:小米、华为、OPPO等国产系统默认会限制杀死进程后的后台活动,需进入应用设置→电池→关闭「电池优化」,并允许「后台活动」。
    • 校验Manifest配置:
      • 确认已正确声明FirebaseMessagingService子类:
        <service
            android:name=".MyFirebaseMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
        
      • 添加开机自启权限(帮助进程重启后恢复推送):
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        
      • 确保自动初始化开启:
        <meta-data
            android:name="firebase_messaging_auto_init_enabled"
            android:value="true" />
        
    • 检查推送消息优先级:普通优先级消息在进程杀死时可能被系统拦截,需发送高优先级消息(payload中设置"priority": "high")。
  • iOS端核心排查项

    • 开启后台推送权限:在Xcode的项目Capabilities中,勾选Background Modes下的Remote notifications。
    • 校验推送Payload:必须包含content-available: 1以唤醒应用,同时若需显示通知,alert字段不可缺失(示例Payload):
      {
        "aps": {
          "alert": {
            "title": "测试通知",
            "body": "这是一条测试消息"
          },
          "content-available": 1,
          "apns-priority": 5
        }
      }
      
    • 检查系统通知设置:确认设备已允许该应用在「退出状态」下显示通知,且未开启「静音」或「隐藏通知」。
  • setBackgroundMessageHandler() 配置校验

    • 确保Service Worker注册正常:在Chrome DevTools的Application > Service Workers中查看注册状态,无报错。
    • 方法内逻辑需异步:避免同步阻塞操作,且数据消息需手动调用self.registration.showNotification()显示通知(通知消息FCM会自动处理,但数据消息需自定义逻辑)。
    • 确认Firebase初始化时绑定了Service Worker:
      const registration = await navigator.serviceWorker.register('/firebase-messaging-sw.js');
      firebase.messaging().useServiceWorker(registration);
      
  • 测试与日志排查

    • 用Firebase控制台分别发送「通知消息」和「数据消息」测试,确认两种类型的推送表现。
    • 查看设备日志:Android用adb logcat | grep FirebaseMessaging,iOS用Xcode控制台,定位推送是否被接收、是否被系统拦截。

内容的提问来源于stack exchange,提问作者Hardik Kava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:40:06