如果既用过iPhone,也用过国际版Android,还用过国内的安卓,(并且这三种都用了半年以上),就能体会到GMS多重要。可以说,iOS的体验大幅度领先于国内的安卓,一多半的原因是国内安卓没有GMS和Google Play。

更不用说,Google的全系列如Google Play, Google Maps, Youtube等,都要依赖GMS。

我上份工作:全国排名前十的互联网公司,Android架构师,负责本部门国内和海外的两条Android产品线。

作为国内和国际业务都做的开发者,我可以明确的说:在Android/安卓应用市场中,Google Play是审核最严格的,远超其余公司。多数人(尤其是国外)对其的信任也远超其余公司。

个人看法,在国际市场上HMS对GMS几乎没什么补偿作用;而在国内市场压根没有GMS,也不需要什么补偿。

从发布研发鸿蒙的新闻能看出,华为想走的是类似苹果的路,硬件软件生态都全部自己掌控。这条路难度非常大,不过万一成功了收益也非常大。

- - - -

前面说iOS领先,很大程度上是因为因为统一推送。所以iOS的任何App都不需要保持后台运行状态,退出就真退出了,不占用内存也不耗电;并且即使不后台运行,也能立刻收到推送消息。

而国外的Android也是如此(使用基于GMS的FCM),所以App没有任何保持后台运行的需要。不是因为国外公司多善良,而是因为Google规定必须内置GMS和Google全家桶才能说生产的手机是 “Android”,所以国外所有的Android手机都有GMS,开发者直接调用就行。

但是国内由于没有统一推送机制(后面有对国内“统一推送联盟”的评价),所以每个App都想方设法的后台运行,消耗了大量的内存和电量。因为如果不这样,就无法收到推送。

-- -- --

Android手机,在后台杀掉App后,仍然能收到推送的三个条件:

系统支持:正规的原生Android系统,含有全系列Google套件的。这类手机,只在中国以外的地区发售;或者说,中国以外的其他地区发售的Android手机都是此类,无论什么品牌。
可靠的网络连接:人在国外。
App支持:比如Gmail, Facebook, CNN, NYTimes, 这些接入了FCM的App。国内的App即使在Google Play发布,也不一定接入FCM,这样关闭后台仍然收不到通知。
测试过十台以上直接从国外购买的手机(三星,小米,华为,VIVO),都是如此。

-- -- --

如果用了 原生系统+可靠网络+FCM 也收不到消息的:

首先,你不能确定你使用的App是否集成了FCM,更不能确定此App的开发者正确集成了FCM。开发的时候,FCM工作量比国内的推送(极光等)要大很多,难度也要大一些。

其次,这是Google官方对FCM的介绍 https://firebase.google.com/docs/cloud-messaging/

如果没有,这里有微软的说明,可以凑合看 Remote Notifications with Firebase Cloud Messaging - Xamarin

提到了"the app will automatically receive FCM messages and display them as notifications whenever the app is backgrounded"

 

如果这样都不能在不打开App的情况下收到消息,只能说是这个App的推送没打开,或者此App的开发者水平有问题。

-- -- --

对于国内各家Push的说明

小米有MiPush,华为有HMS,OPPO有OPush,Vivo也有自己的推送。此外还有友盟Push等。这些Push,如果App都接入,什么都不干呢,App已经快10M了;并且拼命自启动,耗电量感人。如果只接入一家,用户从腾讯的应用宝下载,是赌用户的手机是小米呢,还是赌用户的手机是华为?

-- -- --

统一推送联盟

目前主流的手机都支持了,但是,App进行适配的还不多。即使适配了,App也要保证旧手机的用户能收到,所以旧的耗电推送也不能砍掉。