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

三星A2 Android8.1.0休眠时onMessageReceived未回调推送无法接收问题

三星A2 Android 8.1.0休眠模式下FCM推送无法接收问题解决方案

你遇到的broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE报错本质是Android原生后台限制+三星定制的电池优化策略,在应用进入休眠/打盹模式时拦截了FCM推送广播,没有转发到你的FirebaseMessagingService,因此onMessageReceived不会被触发。

解决步骤

  • 配置三星系统白名单

    打开系统「设置」-「应用」- 找到你的应用 - 进入「电池」设置页:
    1. 关闭「优化电池使用量」开关,或者将应用添加到电池优化豁免名单
    2. 开启「允许后台活动」选项
    3. 进入三星自带的「智能管理器」,将应用添加到自启动白名单、后台运行白名单
  • 调整FCM消息类型

    不要仅发送FCM通知类型(notification)消息,改为发送**数据类型(data)**消息,或携带data字段的混合类型消息。系统休眠/打盹模式下纯通知类型消息会被系统通知栏托管,不会触发应用的onMessageReceived回调,只有数据类型消息才会回调到应用层。
  • 设置推送高优先级

    服务端发送FCM推送时,将消息的priority参数设置为high,高优先级消息会临时唤醒处于休眠状态的应用进程,绕过普通打盹限制完成推送送达。
  • 完善清单文件配置

    检查AndroidManifest.xml配置:
    1. 申请android.permission.WAKE_LOCK权限,避免服务处理推送时被系统回收
    2. 确认MyFirebaseMessagingService的声明配置了正确的com.google.firebase.MESSAGING_EVENT intent-filter
  • 补充代码逻辑

    你当前提供的代码中onNewToken方法仅调用了父类方法,需要补充新token上传到业务服务端的逻辑,避免服务端使用过期token发送推送导致送达失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:15:03