IOS下我们很多人天天开着 邮件推送 微信推送 QQ推送 微博推送 新浪微博推送,安卓敢吗? 五个后台进程消耗电、流量谁敢这么做?现在安卓也出了推送,但绝对是伪推送。实际是挂了个进程,关掉了就收不到。

android和pc模式的原理是,你挂着QQ,你的手机就连着qq的服务器,你挂着msn,你的手机就连着msn的服务器……还有日程软件、电邮客户端、天气软件、股票、新闻、微博……他们在后台的情况下,统统都连着各自的服务器。因此造成的影响是:流量大,耗电。

推送的原理是,iphone连着唯一的一条连接到apple的服务器,由apple的服务器连接到各种邮件、天气、qq、微博服务器。平时就靠apple的服务器与各服务器沟通,有新消息时,才告诉iphone。因此非常省流量,而且省电。iphone可以把所有的第三方进程kill掉,系统底层维持着与apple服务器的连接。而android必须保留进程才能接收信息。我觉得,ios和wp7的这种模式才是明智的。

以下为摘抄,有耐心的人看下去吧
------------------------------------------------------------------------------------

推送系统最早其实是黑莓的专利,后来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强势到能够建立一个q1an9内的推送服务器,也需要说服众多的软件厂商去使用他们的服务器,这就意味着需要有“米聊MIUI版”“微博MIUI版”,更加加剧了安卓生态圈的分裂。

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

转:IOS的推送。是一个强大的功能的更多相关文章

  1. iOS 10 推送全解析,注意事项

    本文旨在对 iOS 推送进行一个完整的剖析,如果你之前对推送一无所知,那么在你认真地阅读了全文后必将变成一个推送老手,你将会对其中的各种细节和原理有充分的理解.以下是 pikacode 使用 iOS ...

  2. 使用PushSharp给iOS应用推送消息

    PushSharp是一个C#编写的服务端类库,用于推送消息到各种客户端,支持iOS(iPhone/iPad).Android.Windows Phone.Windows 8.Amazo.Blackbe ...

  3. IOS远程推送

    IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...

  4. iOS 消息推送(APNs) 傻瓜式教程

    也可以去我的简书页面查看这篇文章 首先: 1.做iOS消息推送需要真机测试 2.做iOS消息推送需要有付费的开发者账号 是否继续看帖? 先学习一下相关的知识吧! 因为中途可能会遇到一些问题,这篇文章或 ...

  5. (转载)iOS 极光推送SDK 集成指南

    iOS SDK 集成指南 使用提示 本文匹配的 SDK版本:r1.2.5 以后. 查看最近更新了解最新的SDK更新情况. 产品功能说明 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能 ...

  6. iOS远程推送原理及实现过程

    ➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...

  7. iOS极光推送,两次Bundleid不一致( 开发证书没有通过验证 是否重新上传证书)的解决方案

    极光在配置ios端推送时,需要上传p12证书,如果遇到如下图:: 证书上传未通过的原因一般有: 1.当前上传的p12证书密码输入有误: 2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候 ...

  8. ios 实现推送消息

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

  9. (转)iOS消息推送机制的实现

    原:http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html iOS消息推送机制的实现 iOS消息推送的工作机制可以简单的用下 ...

  10. 【iOS】iOS消息推送机制的实现

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

随机推荐

  1. Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD

    Build.VERSION.SDK_INT是系统的版本,Build.VERSION_CODES.GINGERBREAD是版本号. 到VERSION.SDK_INT不禁诧异,这是何物?! 看API的定义 ...

  2. Android子线程创建Handler方法

    如果我们想在子线程上创建Handler,通过直接new的出来是会报异常的比如: new Thread(new Runnable() { public void run() { Handler hand ...

  3. uwsgi和wsgi

    一个Web应用的本质就是: 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP响应的Body发送给浏览器: 浏览器收到HTTP响应,从HTTP Bo ...

  4. [Swift] 随机数 | Random numbers

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. mysql InnoDB引擎 共享表空间和独立表空间(转载)

    PS:innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间. 1.什么是共享表空间和独占表空 ...

  6. 22.允许重复的容器(unordered_multiset)

    #include <string> #include <iostream> #include <unordered_set> using namespace std ...

  7. Everedit软件下载、安装和运行(免注册)

    不多说,最近,无意中,留意到这款软件.  前言 1.这是免注册版本   (推荐,这个是别人开发做出来的,放心!) 2.这是需注册版本    (这个是去官网) EverEdit是专门为国人设计的一流文本 ...

  8. jquery easyui ajax data属性传值方式

    $.ajax({   url:url,   type:'post',   data:data,   dataType:'json',   contentType: "application/ ...

  9. 逻辑学总结x

    逻辑学是研究事实联系: 肯定.否定: 条件 结论: 联系  规则: 的学问.

  10. webpack入门与笔记

    为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化开发的复杂度,前端社区涌现出了很多好的实践方法 模块化,让我们可以 ...