科普下安卓和苹果的推送区别
看到很多人说苹果推送比安卓好太多,安卓关掉app就没法收到推送消息,作为从业者,来给大家科普下安卓和苹果的推送区别。
首先上苹果推送的整体流程图
简单描述一下,开发者先接入苹果推送服务,有消息需要推送时,在服务器上配置需要推送的内容,然后数据会通过ios提供的一条系统级推送通道(TCP长连接)将消息推送到手机,手机解析通知并展示。
对于安卓来说,其实谷歌提供的GMS也是一样的逻辑,这里就不重复了。但因为谷歌在国内被墙了,所以国内安卓推送就比较复杂了。简单说下安卓推送的发展过程。
1.在安卓早期,系统限制较少,app开发者基本都是自己来维护一条推送通道。这样就导致了手机资源的极大浪费,对比ios,10个应用在ios只需要建立1条TCP长连接,而在安卓上就需要10条,而维持TCP长连接需要定时发送心跳包,而发送心跳包又需要唤醒手机,所以出现的结果就是:在安卓上,app为了及时收到消息而拼命保活,
TCP长链接维持需要经常唤醒,导致手机内存和电量的迅速消耗。
2. 为了优化前面所说的两个问题,随着安卓版本的演进,对于app的后台保活越来越严格,因此为了解决app被杀后无法收到消息的问题,大多数开发者开始接入第三方的推送sdk,比如友盟、个推、极光等。第三方的推送sdk可以实现推送通道共享。比如,应用a和b都集成了个推,a和b只需要使用1条TCP长链接就都可以收到推送消息。即使其中一个被杀了,也可以使用共享的通道展示通知消息。
3.随着安卓对后台管理的日益严格,且国内厂家为了提高手机性能和功耗,对后台应用采用白名单策略,不在白名单里的几乎不能在后台存留太久。即使共享通路,也不能完全满足推送消息的到达率要求。(因为可能共享的所有app都被杀了,这样通道就断了)。加之各大厂家都为了解决推送问题,提供了自家的推送服务,即系统提供一条系统级的推送通道,app可以通过此通道推送消息,客户端收到推送消息后展示通知,并不需要应用存活。其实此时逻辑和苹果推送服务已经完全一样了
,而个推友盟极光的sdk等也提供了使用
系统自带推送通道的开关,也就是说只要使用系统的推送服务,通知消息几乎是百分百到达。
总结一下,回答几个常见的问题。
1. 安卓的推送是不是不如苹果?
这个问题无悬念,因为苹果的强管控,所有推送必须走APNS,而安卓虽然有同样的功能,但不是每个应用都接入了推送服务。
2.安卓app挂了是不是就收不到消息了?
如前所述,此说法不正确,只有走自己推送通道的才会app挂了就没法收到消息,而使用系统通道的不会。大多数的应用都是用了系统的推送,不用的要么是用户太少,app不是国内的,因为使用系统推送对app本事也是有好处的,可以提高通知到达率;要么就是常年在厂家白名单里的,比如微信QQ这种,没哪个厂家会主动杀微信,微信也不愿意用厂家的推送通道,一直用的自己的。
3.安卓推送和苹果推送差距大么?
这个我只能说差距肯定有,但不是很大,主流应用推送都可以即使到达。如果对比较小众的app推送消息及时性有要求的,那就有差距了。
最后,补一个安卓发展趋势,工信部统筹的统一推送联盟估计这两年就要上线了,为的就是统一国内安卓推送的问题,而且统一推送联盟还利用了运营商的信令,即使没有数据连接也可以推送。安卓推送的到达率超过ios我觉得问题不大。
手机码字,还多包涵。
注意看这个男人叫破喉咙也没用
· 吉林希望统一推送联盟今天年底就可以上线,国内的安卓机耗电问题能有很大缓解。
couthelloworld楼主
· 安徽现在安卓app还自己做推送的很少了,我所接触的都是用别人的推送服务,自己搞推送,到达率低,还占用服务器,典型的吃亏不讨好。就连淘宝都接了厂家的推送。而你说的微信不肯接统一推送联盟的问题,即使腾讯不接,其他app开发者接了,对安卓的生态也是好的。而其他所有人都接了,我相信腾讯最后也会接,毕竟如果是有关部门出头,谁也跑不掉,比如如今四部委联合的应用隐私权限问题整改,没有必要理由你都需要整改。