最佳实践:中国大陆网络环境的通知获取
前言
在前几日去往越南社会主义共和国中,我发现应用Telegram居然工作了!
这可是非常高兴的事情,由于我家的网络速度不是很好,因此这个应用一直提示连接中,真让人恼火。
不过,即使处于良好的国际网络条件下,Telegram有时候的通知推送也很迟。由于之前有过研究谷歌推送服务FCM的经历,因此我很自然就想到是FCM的问题。
推送简介
如果您对应用推送开发有深刻了解,请跳过本节。
如何给应用推送通知,这是一个很难解决的问题。
最简单的做法就是让应用在后台启用一个监听进程,监听服务器对应的token通知是否有推送。
但是这样极其耗电,并且对小应用的服务器负载量提出了不必要的要求。
这时候,借鉴网络交换机的思想,使用一台中心服务器,每一台终端设备仅需建立一个连接,就可以方便的实现推送。
FCM框架的整体工作流程如下:
由于这一特性,GFW在较早时期没有封禁FCM相关服务,但是随着国内各个厂商设计自己的推送服务,渐渐的,FCM失去了其重要地位,使用FCM服务的大多都是国外的违法软件,因而FCM服务终遭封禁。
我们来看看一些常用应用接入了那些推送服务吧。







我们可以看出,MiPush是最笨拙的推送,必须接入四个服务,其他的HUAWEI Push,VIVO Push,甚至极光推送都没这么麻烦。
如果您是从中国大陆地区下载的应用(如微信,小红书),其不会接入FCM库。
关于微信是怎么推送的。。应该就是直接建立连接吧。。。。
保护FCM
由于中国大陆地区的网络环境,尤其是近几年国内Push的发展,GFW开始对mtalk.google.com域名封禁,FCM服务已经无法直接连接,需要使用虚拟私人网路或者代理服务器来保持稳定连接。
此外,由于中国大陆各大厂家的魔改,导致很多Android设备的FCM服务都被更改,其中最为厉害的便是小米,直接删掉了国行版本的所有FCM服务代码,使用自己的Mi Push来推送,这也导致小米设备的信息通知能力差。
需要注意的是,有些系统修改了安卓系统的耗电管理策略,会导致锁屏切断FCM等问题,有些系统无法修改Google服务的电量控制。
经检查,系统巧妙的将谷歌商店归为系统应用,导致无法控制保活。
不过不用担心,我们只需要保护FCM就可以了,可以下载FCM toolbox工具或者在拨号界面输入*#*#258#*#*
,即可呼出FCM状态。
这里的状态简要讲一下:
- Connected 5228 mtalk:正常,连接良好。
- Connecting 5228 mtalk ERR_IO_FIN:正在连接,但一般不会看到这个状态(连接很迅速)。
- Not Connected 443 alt-mtalk :由于网络原因没有连上,转换至国内可能直连的域名,但是目前仅alt8和alt9勉强可用。
- No Previous connect :代理质量不高或者代理异常。
虽然不能通过修改省电策略,但是可以下拉锁定后台。
至此,对FCM的保护工作告一段落。
保护Telegram
大部分系统仅需这一步,给予其后台活动权限即可。
愚蠢的Magic UI和EMUI需要这一步,所谓的电池优化就是变相限制应用消息接受能力。
我在很久之前就已经解除了Telegram的活动限制,但是有时候仍然无法收到通知,原因就出在这里,感谢@LoopHy的帮助。
这样,我们就可以很方便的在境外接收Telegram应用上面的信息了。
神奇方法
这个方法虽然安全靠谱,但是需要长时间开着VPN,会显著减少续航。
并且HUAWEI设备是没有谷歌框架GMS的,显然不可能有FCM服务,不能实现推送。
那么怎么办呢,我们注意到:
居然接入了HUAWEI Push,解决了在某个不是安卓却能兼容安卓系统的推送问题(((
官方也迅速给出了回应:
但是,正如我们先前分析的那样,推送服务的中心服务器是由提供商监控的。。。。
因此请谨慎选择该版本,并且由于其依赖HMS Core服务,还需要额外安装HMS。
经过与@?的测试,这个推送服务并不是很稳定,也可能是由于我的设备的HMS并非原生,总而言之,并不推荐使用该版本。
根据包名检测发现,HUAWEI版本的Telegram和Google Play商店的包名一样,都是org.telegram.messenger,这意味着它们可能造成版本冲突。
从APP图标也可看出区别:标准的Telegram应用的图标是蓝色背景,而谷歌华为特供版是白色背景蓝色圈。
两个特供版的区别:
- Google Play:强制要求允许使用Google登录,并且隐藏暴恐行为群组。
- HUAWEI:接入了HUAWEI Push。
小结
脱离国产应用最困难的一点就在于通讯软件,不仅要求自身具有一定的信息技术能力,对对方也提出了同样的要求,并且在系统层级的限制也让信息推送无比困难,希望本文能够让自身在出境的时候,更方便的与外国友人交往,及时收到信息。
中国厂商的海外机型大部分都接入了FCM服务,但是对国内应用的推送又未特殊调整。
于此相比,iPhone的统一推送服务在中国大陆并未被屏蔽,并且没有针对中国大陆进行特殊调整,具有国际互连的天生优势。
因此,iOS的通知推送是Android无可比拟的。
至少,在长城消失之前。
致谢
感谢@lrony @LoopHy @?对本实验的帮助。
为了防止拖更,我建立了如下频道,欢迎查看并关注( •̀ ω •́ )✧
TIP:点击图片可以直接跳转链接哦(只有QQ没有链接)))