NoActive 中文文档 下载 App

NoActive FCM 推送解冻 - Firebase Cloud Messaging 消息接收方案

FCM 推送背景

FCM(Firebase Cloud Messaging)是 Google 提供的跨平台推送服务。Android 上,应用即使被冻结,FCM 推送也可以通过 Google Play Services 进程传递。

但问题是:推送到达后,如果接收推送的应用进程已被冻结,应用无法处理这条推送消息,通知不会弹出。

NoActive 的 FCM 解决方案

NoActive 提供两种 FCM 解冻方案,确保重要消息能及时送达。

方案一:FCM 全局解冻

开启 AdvanceConfig.json 中的 receiveFCM: true。

开启后,所有应用在收到 FCM 推送时都会被自动解冻,处理完毕后重新冻结。

优点:配置简单,一处开启全家生效。

缺点:所有应用(包括不重要的)收到 FCM 都会解冻,可能带来不必要的唤醒。

方案二:单独配置 FCM 解冻应用

关闭 receiveFCM(全局解冻关),然后通过 fcmAppSet 指定需要 FCM 解冻的应用。

配置示例:

{
    "receiveFCM": false,
    "fcmAppSet": "com.example.app1,com.example.app2"
}

这只有指定的应用在收到 FCM 时才会被解冻,其他应用不受影响。

优点:精细控制,只让重要应用在 FCM 推送时解冻。

缺点:需要逐个配置应用。

推送到达率的局限

FCM 设计原理限制

FCM 推送的到达率取决于:

NoActive 作为应用层模块,无法绕过 FCM 的底层限制。以下场景可能导致推送延迟或丢失:

场景影响
设备无网络推送无法送达
数据节省模式低优先级推送被延迟
电池优化FCM 被 Doze 限制
应用无 FCM 支持推送通道不存在

NoActive 免责声明

NoActive 不保证 FCM 推送到达率。即使配置正确,推送延迟或丢失仍然可能发生。

与网络解冻的关系

网络解冻和 FCM 推送解冻是两个不同的方案:

对比网络解冻FCM 推送解冻
触发条件应用需要维持网络连接收到 FCM 推送
耗电较高(维持连接)较低(按需解冻)
可靠性取决于网络质量取决于 FCM 服务质量
适用应用消息类核心应用所有支持 FCM 的应用

对于核心 IM 应用,建议白名单 > 网络解冻 > FCM 解冻。

配置文件位置

AdvanceConfig.json 位于 /data/system/NoActive_8位随机字符/config/ 目录下。修改需要 Root 权限。

→ 进入 配置文件分组 了解完整配置结构