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

Oreo系统中移除后台应用后FCM通知无法送达问题求助

问题分析与解决方案

首先,你碰到的GCM : broadcast intent callback: result=CANCELLED错误,结合dumpsys里User 999的stopped=true状态,大概率和Android后台限制机制以及多用户/访客模式下的应用状态关联有关——哪怕访客用户没安装你的应用,这个异常状态也可能牵连主用户的应用接收FCM通知的能力。

下面是具体的排查和解决步骤:

1. 先搞定OEM厂商的后台管控

很多国产安卓厂商(小米、华为、OPPO等)都有自己的后台拦截逻辑,哪怕代码和官方示例完全一致,也可能被系统一刀切限制:

  • 去设备「设置」→「电池」→「应用电池优化」,找到你的应用,设置为「不优化」;
  • 检查「自启动权限」:有些设备会单独有「自启动管理」选项,一定要把你的应用加入允许列表;
  • 关闭「应用后台冻结」「耗电保护」这类可能锁死应用后台的选项。

2. 确认Android 12+的通知权限

如果你的设备是Android 12(API 31)及以上版本,必须主动请求POST_NOTIFICATIONS权限,否则后台通知会被系统拦截:

  • 先在Manifest里加权限:
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    
  • 再在代码里动态请求:
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
            ActivityResultContracts.RequestPermission()
            // 这里发起权限请求的逻辑,比如用registerForActivityResult
        }
    }
    

官方快速启动应用应该已经包含了这部分处理,你要确认自己的项目没遗漏。

3. 重置多用户/访客模式的应用状态

虽然访客用户(User 999)没装你的应用,但stopped=true的标记可能触发系统的全局限制,试试这两步:

  • 进入设备「设置」→「用户和账户」→「访客」,切换到访客模式后再切回主用户,强制重置应用状态;
  • 彻底卸载应用,清理设备上的相关缓存,重新安装并主动启动一次,确保主用户下的应用状态完全正常。

4. 核对FCM配置的细节

哪怕你说代码完全一致,也再核对几个关键配置:

  • 确认google-services.json是对应你自己Firebase项目的,包名、SHA-1指纹必须完全匹配;
  • 检查Manifest里的FirebaseMessagingService声明是否正确:
    <service
        android:name=".MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    
  • 发送Payload时确保priority是high(你已经设置了,但FCM控制台发送时也要选高优先级)。

5. 分场景测试通知接收

  • 先正常启动应用,按Home键退到后台(不杀进程),发送通知看是否能接收——如果能,说明前台/后台逻辑没问题,问题只出在进程被杀后;
  • 检查开发者选项里的「不保留活动」是否开启,如果开了就关掉,这个选项会导致应用退后台就销毁,干扰测试。

最后补充:User 999的stopped=true确实是大概率诱因,因为Android多用户系统会共享部分应用状态标记,重置访客用户的状态后,这个问题应该能解决。

内容的提问来源于stack exchange,提问作者anurag bhowmick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:14:20