安卓稳定实现 FCM/GSM 推送方法

lurui45 · 昨天 11:06 · 311 次点击

研究了半天如何实现 GMS/FCM 的稳定推送,大概搞明白了原理。其实就是三个条件,确保 FCM 连接,确保 FCM 不被杀,确保应用自启动。

确保 FCM 在线

拨号界面输入*##426##*查看 FCM diagnostics ,如果显示 Connected 表示已连接。

FCM 似乎是可以走 ipv6 直连的,但是有人说不能让它一直裸连

如果开了梯子,一定要关掉梯子软件中的允许应用绕过 VPN ,否则连接会有问题

关掉允许绕过后,连接正常,通过 ipv4 走梯子连接(如果梯子开了按应用分流,需要勾选 com.google.android.gms ),但是似乎会周期性断开然后重连上,不知道什么原因,是否是梯子的问题

确保 FCM 服务未被系统杀掉

由于国产系统魔改了 Android 默认的电池策略,没法设置 GMS 服务的电池策略,系统通常会杀死后台的 GMS 服务,以我用的 OPPO 系的一加 Ace3 ,ColorOS15 系统为例,似乎有两种方法解决该问题。

  • 冻结系统电池应用,或替换成氧 OS 的电池,来实现 GMS 的保活
  • VPN 一直开着,GMS 服务走 VPN 似乎不会就不会被杀掉(存疑)

应用开启自启动权限

有人说 FCM 需要应用自启动,也有的说不需要,按照原理来讲,通知类消息可以直接通过 FCM 接受然后显示在通知栏,与应用的运行状态无关,就像 iphone 一样。如果是数据类消息,需要 FCM 唤醒应用然后由应用接受消息发出通知,这种情况需要自启动权限。

我觉得像 Telegram ,Outlook 这些应用应该是不需要自启动的,但是我实测是关掉自启动就有时候就是不能收到消息,需要打开自启动,搞不懂为什么。

其他

  • 原生系统的意义应该是 FCM 服务保活,如果能够在国产系统上实现 FCM 服务不被杀,我觉得没必要刷类原生系统
  • VPN 可以 24h 一直开着,并不耗电,我的用法是按应用分流+策略,没试过单独走策略模式,是否会更耗电如果有好的机场,24h 开着真的可以享受到类似国外的体验,随时用 Google ,推送秒接受。
  • 我个人是需要 Outlook ,Authenticator ,Telegram 能够及时收到推送,这些都是在 Play 商店下载的
  • ColorOS 限制 5 个额外的自启动应用,正常是够用的
  • 微信实现 FCM 比较复杂,但是微信冷启动也挺慢的,一直锁后台似乎也不耗电,不想折腾了
  • 想搞明白到底 FCM 需不需要应用的自启动权限。
  • 关于应用的电池优化,我理解仅需要自启动权限就够了,FCM 通过自启动唤醒应用来接受消息,即使后台被电池优化了,也没关系。
  • 为啥国内的推送服务,哪怕应用彻底死了而且不开自启动,也能收到消息。
  • 有个 FCMFIX ,需要 root ,可以让小米手机不开自启动也能收到推送,https://github.com/kooritea/fcmfix ,有用过的可以讲讲。
举报· 311 次点击
登录 注册 站外分享
2 条回复  
lurui45 楼主 小成 昨天 11:39
@my101du 我测试了一天,挺稳定的,你延迟是不是没一直开着梯子
my101du 小成 昨天 11:16
看标题我以为是最终实现了。。。原来还是原理说明和猜测。说实话这样的文章太多了。 同一样的一加,我的机型是 Ace 3V ,已经放弃推送无延迟的尝试了,明年上 iPhone SE4 1. VPN 不一定稳定,而且也不想 24 小时开着 2. 自启 + 锁定 + 取消优化 3. 用 Play 市场的版本 Outlook Teams Authenticator 消息该延迟还是延迟。Teams 还是看不到别人的当前状态。
返回顶部