FCM(GCM) 测试报告

FCM 前身是 GCM ---- Google Cloud Messaging,Google 在推出 Firebase 云服务之后,更名为了 FCM。 Firebase 是一个集实时网络数据库,消息推送,异常报告,文件存储,用户统计,广告分发,云端测试等为一体的综合后端云服务。相比其他云服务最大的优势就因为他是 Google 的亲儿子。最大的劣势就是在中国大陆被墙。这次测试主要针对消息推送部分,通过三款不同机型的测试机器,分析目前 FCM 在国外的使用情况(国内乙烷),本次测试主要是针对不同机型的推送可达性测试,对于如何使用请看 Firebase 官方文档。

测试网络:阿里云香港B区节点代理

测试机器:

Nexus 5x (Android 7.1.1):亲儿子,预装全套 Google 服务(包含 Store),已登陆 Google 账号。

Samsung S7 (Android 7.0.1) :国行版,只预装 Google play service(不包含 Store),未登陆 Google 账号。

Meizu Pro6 Plus (Android 6.0.1) :未预装 Google 服务,通过第三方工具安装全套服务(包含 Store),未登陆 Google 账号。

测试结果:

ps:以下的手动杀掉任务均为呼出多任务界面并滑动卡片的形式杀掉

ps2:本次测试的推送均为 Data 类型并且都是 High 优先级,详情可见 高级消息类型

ps3:FCM Data 类型推送原理大致为机器中的 Google Play Service 收到通知后,转发给对应 App 处理。如果此时 App 不存活,则 Google Play Service 负责将 App 唤醒后交由 App 处理。

Meizu Pro6 Plus 默认 手机管家自启动白名单
前台 可达 可达
后台 可达 可达
后台一段时间后 不可达 可达
手动杀掉任务 不可达 可达

结果分析:此机型带有魅族的 OneMind 技术,可对用户使用习惯进行机器学习,调整后台应用权限,因为时间关系,无法通过经常使用的方式促使 OneMind 学习并更新策略,此项暂不考虑。在默认情况下,进入后台一段时间后会被 OneMind 杀死,之后便无法收取通知。手动杀死任务同样也无法收取通知。但是如果手机管家中加入 自启动 白名单,那么不管是被 OneMind 杀死还是手动杀死,收到推送后,都会被重新启动并处理推送。

Samsung S7 默认 手机管家自启动白名单
前台 可达 可达
后台 可达 可达
后台一段时间后 不可达 可达
手动杀掉任务 不可达 可达

结果分析:此机型预装三星的 “智能管理器” 软件,基本表现和上一款机器相同,在加入自启动 白名单后,那么不管是被 “智能管理器” 杀死还是手动杀死,收到推送后,都会被重新启动并处理推送。

Nexus 5x 默认 \
前台 可达 \
后台 可达 \
后台一段时间后 可达 \
手动杀掉任务 可达 \

结果分析:此机型没有任何第三方管理工具,为 Android 原生后台管理机制。经过测试,发现在任何情况下,即使 App 进程完全不存活,也可以在收到通知的时候重新启动并处理通知。

测试结果总结:

  1. 使用推送无需安装 Google Store
  2. 使用推送无需登陆 Google 账号
  3. 使用推送必须安装 Google Play Service
  4. 非原生 Android 主要是对应用的自启动权限进行控制,在无论使用何种方式将 App 杀死后,即使 FCM 收到了推送,可是却无法通过 Google Play Service 唤醒 App
  5. 在相应的第三方管理软件中加入自启动白名单可解决此问题

通过后续观察发现,预装 Google 套件的机器会由于 App 没有自启动权限而导致无法收到推送,而没有预装 Google 套件的机器,可能会由于 Google Play 被杀 以及 App 没有自启动权限两个原因导致无法收到推送。
分析原因如下:

  • 预装 Google 的机器是作为系统服务存在,开机自启动,并且本身就处于白名单范围,不会被杀。
  • 未预装 Google 的机器是通过第三方工具安装到机器上,是作为一个系统服务以外的第三方程序,所以是可能被手机管家杀死的。此时需要将 Google Play Service 服务和 App 加入白名单才能解决。

你可能感兴趣的:(FCM(GCM) 测试报告)