2018
01.17

安卓系统推送的问题

安卓系统由于防火墙的原因,GCM在国内不能使用。目前国内的做法是在app里集成第三方提供的推送sdk。两者的原理基本相同,就是在手机上维持一个长连接到服务器,这样的话服务器就能主动向手机发消息,而不是被动的接收手机发送的请求后再向手机端返回响应。

但是由于国内手机厂商不同的定制rom,会杀死后台进程,上面提到的长连接就不能保持,从而导致推送消息不能送达手机。目前,有以下几种方法能解决或改善后台进程被杀的问题。

(1)用户量很大的app,比如微信,qq,它们会进入到手机厂商的白名单中。白名单中的app转到后台以后不会被杀死。如果你的app足够牛b有影响力,手机厂商可能会将其放入白名单。

(2)qq表面上转移到后台,但实际上并不是如此,它是在前台留有1个像素。(这条未经本人亲自验证)

(3)很多第三方推送sdk使用了共享连接的方式,即集成了该sdk的多个app使用同1个长连接接收推送消息。如果其中1个app被打开,则会建立1个长连接,其他的app也会使用这个长连接。所以,我们可以使用用户量高并且被很多知名的app使用的sdk,如果这些知名app被打开,那么我们的推送也会被送达。比如,据说王者荣耀就使用了腾讯公司的信鸽推送,我们可以考虑也使用这个sdk。


Hit Counter by http://yizhantech.com/