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

304 天前
 lurui45

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

确保 FCM 在线

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

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

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

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

确保 FCM 服务未被系统杀掉

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

应用开启自启动权限

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

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

其他

16264 次点击
所在节点    Android
43 条回复
RichardLuo0
249 天前
@Zhzp 120s 是因为 ssr 默认值 120s ,他们没改,我猜想 fcm 有个心跳最小值,结果最小值都大于 120
RichardLuo0
249 天前
@lurui45 楼主现在还能用吗?我想请问一下你是海外手机号吗?我以前一直可以 fcm ,最近换了个香港 vps 居然就无论如何开不起来了。我甚至试了试挂 warp ,还是不走,我也想不通。
Woodrow
225 天前
@NokiaForever #3 如果分应用代理中 gms 绕过代理,这些域名规则是不是就不用加了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1099859

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX