http://www.miui.com/thread-328820-1-1.html

刚刚看到一个关于集成米聊微信等推送系统的投票贴,感触很深,确实用Android以来其推送的占用资源和不稳定性让我有了些微不满,不过前两天我恰好看到了一篇技术类文章全面阐释了Android的推送机制与ios的区别以及带来的实际体验的差距,所以想把自己获得的一些东西分享给大家。

推送系统最早其实是黑莓的专利,后来ios非常聪明的学去了,而且学的很好。在推送之前很多智能系统只能通过轮询的方式不断定期向服务器询问是否有新信息,往往费电和费流量。
ios建立了一个统一的服务器,APNS(Apple Push Notification Service),简单的说,我们在手机上接收到的所有推送信息都来源于这个服务器,每一台ios设备都有一个独立的识别码相当于身份证。那么当你用这个身份证登录了某个软件(比如米聊)后,就连接到了米聊的服务器上,在推送体系中这个目标服务器被称作Provider。接着你看完消息,退出米聊后,进程结束,但是此时你这个身份证的登录状态并没有在Provider里注销,而是保留了。因此如果有人给你的米聊发送了信息,就会触发Provider的行为,但是由于你关闭了米聊,所以它无法直接向你的手机发送消息,于是它转而向APNS发送信息,顺便带着你的身份证。然后万能的APNS就顺着身份证找到你,然后把消息塞到你的手机里。只要你ios设备的推送不关闭,流量不关闭,那么你的设备就会一直和APNS保持连接,从而达到24小时接受推送信息的目的。有人应该已经明白了这样做的好处,因为你只和一个服务器产生连接,省电省流量。另外由于APNS服务器的广域和强大的稳定性,以及该服务在ios属于固定的API接口,使得整个推送系统稳定而健壮。不过顺便一提ios的邮件推送是另一套完整的PushMail系统,和这个无关。

那么为什么安卓的推送没有ios给力?其实在Android2.2之后,谷歌也建立了类似ios一样的推送系统——Android Cloud to Device Messaging(C2DM),但是为什么这个系统没有APNS给力呢?主要是C2DM的服务器对于国内来说是外面的东西,由于谷歌在国内受到了一些格外的照顾,这个服务器也就显得不那么给力,这是国内厂商多不选择C2DM的重要原因。另外Android开源和API的开放提供了其它推送的选择。在C2DM不给力的情况下,一些软件选回了老的轮询方式的(凡是软件里需要你自己选择多长时间检查一次有没有更新的软件都是轮询方式)来提供消息,这种方式有相当的不稳定因素,在机器内存紧张的情况下驻留的http服务容易被回收,还更费电费流量。更多软件厂商则选择了利用Android的自由的XML的API接口自己搭建XMPP服务器来直接向用户推送消息,缺点同样是驻留的服务容易被回收,尤其对于小内存机器和在内存管理上时常有技术性溢出(回收机制缺陷)的MIUI来说如果不锁定服务的内存那么就可能出现收不到推送的情况。总体看来由于安卓推送机制的缺陷和进程的不统一(你装米聊微信微博就等于后台有了三个推送进程),整体上的健壮性得不到保证,也更加费电和费流量,与ios统一而健壮的推送服务有了很大的差距。

综上所述安卓系统的推送问题是并不是MIUI小组可以企及的,就算MIUI强势到能够建立一个墙内的推送服务器,也需要说服众多的软件厂商去使用他们的服务器,这就意味着需要有“米聊MIUI版”“微博MIUI版”,更加加剧了安卓生态圈的分裂。

至于在Android4.0时代安卓能否改变这个现状我只能持谨慎乐观态度,因为其开源性和向下兼容的API整合使得这种现状更有可能延续下去而不是改善。

转载于:https://www.cnblogs.com/lihaozy/archive/2013/02/25/2931538.html

[转]关于安卓与ios的推送系统,我说说自己的看法。相关推荐

  1. Android与ios消息推送哪个好,科普下安卓和苹果的推送区别

    看到很多人说苹果推送比安卓好太多,安卓关掉app就没法收到推送消息,作为从业者,来给大家科普下安卓和苹果的推送区别. 首先上苹果推送的整体流程图 简单描述一下,开发者先接入苹果推送服务,有消息需要推送 ...

  2. 苹果服务器怎样推送消息,ios消息推送

    之前一篇说了ios推送证书的生成.这是开发推送的基础环境.这次介绍的是怎么去开发. 来几句废话: 苹果的推送相比于安卓的推送,显得更加清晰,简明许多.首先不必考虑那么多厂商配置,其次苹果的送达率要比安 ...

  3. IOS 本地推送和远程推送

    最近在研究iOS的推送问题,遇到了好多问题,经过很多大神的文章指点最终整理了一下,放在这里和大家分享. 准备工作 首先要有一台苹果的设备,模拟器是不支持推送的,所以你需要一台iphone,ipod t ...

  4. android与苹果 推送,科普下安卓和苹果的推送区别

    看到很多人说苹果推送比安卓好太多,安卓关掉app就没法收到推送消息,作为从业者,来给大家科普下安卓和苹果的推送区别. 首先上苹果推送的整体流程图 简单描述一下,开发者先接入苹果推送服务,有消息需要推送 ...

  5. android系统级别推送,安卓10.0即将推送,等着升级系统吧,望周知!

    原标题:安卓10.0即将推送,等着升级系统吧,望周知! 安卓10.0即将推送,等着升级系统吧,望周知! 经过多年的创新,Android的简洁性和流畅性已经让用户满意,它的经验也不会输给手机巨头Appl ...

  6. iOS消息推送机制的实现

    iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务 ...

  7. ios消息推送机制原理与实现(转)

    今天给无线事业部的同事开发苹果客户端的推送接口.无线事业部就是我们公司专门开发各种终端的app的部门啦! 无线事业部的同事做事还是很体贴的,同时发给了我参考文档地址和需要的开发需要的pl2文件. 提供 ...

  8. iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐

    代码地址如下: http://www.demodashi.com/demo/13208.html 前言 我们首先要在AppDelegate里面进行iOS的适配,可以参考这篇文章 iOS原生推送(APN ...

  9. php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...

    解析php做推送服务端实现ios消息推送 准备工作1.获取手机注册应用的deviceToken(iphone手机注册应用时返回唯一值deviceToken) 2.获取ck.pem文件(做手机端的给) ...

最新文章

  1. 网络文件系统(samba、nfs、iscsi)
  2. ajax跨域访问控制
  3. 【POJ - 2631】Roads in the North (树的直径,模板)
  4. 蛤蟆 Oracle,47.蛤蟆笔记go——go连接Oracle
  5. leetcode —— 区间加法
  6. Silverlight访问Wcf Ria Library的问题总结
  7. js使用showModalDialog,弹出一个自适应大小窗口
  8. 在centos上完全删除mysql
  9. 玩转Python大数据分析 《Python for Data Analysis》的读书笔记-第08页
  10. Excel 公式 lenB无效 解决方案
  11. 太原冶金技师学院计算机系,山西冶金技师学院专业都有什么
  12. 解决Qt安装后没有桌面图标
  13. 《游戏系统设计三》游戏服务器线上出bug,怎么办?急,在线等!热更新
  14. RE写作Issue问题题库分析与提纲
  15. k线符号图解大全_八种常见的K线符号
  16. luogu P4100 [HEOI2013]钙铁锌硒维生素
  17. CReLU与PReLU的大体简介
  18. java ctr_分组密码_计数器(CTR)模式_原理及java实现
  19. Vue+SpringBoot+ElementUI实战学生管理系统-10.学生管理模块
  20. 玄学曲线——GPU呈现模式分析

热门文章

  1. 【深度学习】面向医学图像的病灶分割调研(三)
  2. python大一知识点_python知识点复习
  3. 网络推广团队介绍网站页面优化时需要注意什么细节?
  4. 网络营销推广解答网站排名上下摇摆不定怎么办?
  5. windows server 查看 删除事件_蓝队护网 之Windows服务器加固
  6. php序列化数据无法反解析,PHP-反序列化数据不起作用
  7. linux系统下docker安装,Linux下Docker的安装与使用
  8. python画数组曲线_python – 在matplotlib中如何填充由两组不同数组定义的两条曲线?...
  9. 1、VGG16 2、VGG19 3、ResNet50 4、Inception V3 5、Xception介绍——迁移学习
  10. An attempt has been made to start a new process before the current process has finished its