关于ios和Android后台推送工作原理的小总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mwthe/article/details/62890071

 
    如今的推送功能,在很多APP上得以应用,国内很多出名成熟的推送例如百度推送、极光推送、友盟推送等第三方推送服务提供集成到自己的APP中;可我看了很多网络文章,这个推送的“原理”很多文章都描述的模棱两可,大多文章都介绍了推送的底层所使用XMPP(可扩展消息处理现场协议)、MQTT(IBM系列的,消息队列遥测传输,sohu早期客户端的方式),可最终说了一大堆我依旧蒙头转向,请原理我这个一般程序员的愚笨吧;


    1、要获取服务器上不定时更新的信息,一般来说有两种方法:第一种是客户端使用 拉去 的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现(弊端很多,例如耗电、费流量、信息不及时)。第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。


    2、几种常见的解决方案实现原理,无非就是轮询、SMS拦截短信、还有就是持久链接,关于这三张方式,很多平台都详细的讲过了,在此基础上,苹果的APNS、Google的GCM成为推送服务端的两大阵营;说到这里,就有必要探讨一下两则的区别了,ios采用的是系统常驻进程,和唯一的apns服务器连接,管理着全局的推送信息进来,然后APP再根据tag判断获取自己的推送信息;Android的GCM在国内没法使用,从而催生了很多第三方推送平台,Android APP的每个推送都是开启独立的后台进程和服务端通信,有若干个APP的推送,就有对应的若干个进程在运行;ios和Android各有优劣,ios的推送服务是系统级别的唯一的,客户端所有的推送信息都来源于这唯一的入口,因而在耗电、内存开销都小,但是由于apns是苹果公司独立运营,这也带来很多的运营风险,它一旦瘫痪所有的iPhone都将收不到推送信息;再说一下Android,ios的优点就对应的Android的缺点,所以在耗电、内存都会开销大,但也因为他是独立的,所以不受生产商约束,推送可以自由化根据自己需求定制开发,可也有一个大弊端,由于各个app的推送服务都是跟随独立的,在内存不足或者APP被彻底关闭后,推送服务也会一同over,也就是说推送会跟着APP结束而结束,结束后将接不到推送;


   3、以上做了点对大神阐述推送后的一点自己的片面理解,那么值得说一下APNS和GCM原理了,它到底是如何推送到咱们手机上的呢,其中Android的就是Google的XMPP和IBM的MQTT协议了,XMPP用于即时通信和在线探测,而MQTT是工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议(个人认为它更适合物联网,传感设备领域的,百度百科中说他的理论是轮询),差异就在于此,也不知道现在是否在APP中使用,但是俩着的共同的链接方式都是tcp/ip链接,也就是咱们说的长连接,tcp/ip保证了我们在传输中数据的完整性

一时兴起写的,肯定多有错误,别吝啬多指导噢
 
 

猜你喜欢

转载自blog.csdn.net/mwthe/article/details/62890071