推送是手机中非常常见的功能了。可是在实现上iOS和Andriod却有很大的差别。
因为iOS有强大的产品生态体系,APP从研发到审核上架,再到最后在手机端运行,都有严格的把关。所以推送功能在它这里实现起来比较简单。每个设备只要保持一个与APNs的常链接,服务器将要推送的消息发送给APNs,APNs再将消息转发到响应的手机,手机内置的程序再进行分发,到响应的APP,就能很好的实现推送功能。由于手机APP所有的推送功能有统一的长连接和通知分发的机制,手机的运行效率不会受到特别大的影响。
而Andriod却完全不同了,虽然谷歌初期在Andriod系统中也是内置了用于推送用的服务程序,也搭建有类似于APNs的服务器,但是国内访问其服务器受限,很多手机生产厂商为了给手机减负,都把这些代码删掉了。导致现在Andriod手机只能通过与服务器长连接的方式,才能实现推送功能(当然还有其他的解决方案、由于成本和一些其他条件的限制无法落地)。还好有很多第三方的推送平台帮我们解决了一些技术难题。如极光推送。下边我们详细来说下。
先来说说没用极光推送的情况下iOS的推送原理。
下面这张图很能说明问题:
Provider一般只服务器(当然如果只是为了测试,命令行也可以),反正就是发起推送的一方&