推送是手机中非常常见的功能了。可是在实现上iOS和Andriod却有很大的差别。

因为iOS有强大的产品生态体系,APP从研发到审核上架,再到最后在手机端运行,都有严格的把关。所以推送功能在它这里实现起来比较简单。每个设备只要保持一个与APNs的常链接,服务器将要推送的消息发送给APNs,APNs再将消息转发到响应的手机,手机内置的程序再进行分发,到响应的APP,就能很好的实现推送功能。由于手机APP所有的推送功能有统一的长连接和通知分发的机制,手机的运行效率不会受到特别大的影响。

而Andriod却完全不同了,虽然谷歌初期在Andriod系统中也是内置了用于推送用的服务程序,也搭建有类似于APNs的服务器,但是国内访问其服务器受限,很多手机生产厂商为了给手机减负,都把这些代码删掉了。导致现在Andriod手机只能通过与服务器长连接的方式,才能实现推送功能(当然还有其他的解决方案、由于成本和一些其他条件的限制无法落地)。还好有很多第三方的推送平台帮我们解决了一些技术难题。如极光推送。下边我们详细来说下。

先来说说没用极光推送的情况下iOS的推送原理。

下面这张图很能说明问题:

Provider一般只服务器(当然如果只是为了测试,命令行也可以),反正就是发起推送的一方,首先将要发送的消息发送给APNs,然后APNs负责将消息发送给对应的设备。设备中有内置的系统程序再把消息分发给客户端App。当然,要想完成上边的这个流程,Provider必须知道他要发送的对象是谁,唯一ID是什么?这就需要,APP在安装的时候,在APNs上注册一个唯一ID然后再把这个ID传送给Provider保存了。具体的注册过程,可以参见下图:

根据上图的逻辑我来给大家解释一下:

1.你的IOS应用需要去注册APNS消息推送功能。

2.当苹果APNS推送服收到来自你应用的注册消息就会返回一串device token给你(很重要)

3.将应用收到的device Token传给你本地的Push服务器。

4.当你需要为应用推送消息的时候,你本地的推送服务器会将消息,以及Device Token打包发送到苹果的APNS服

5.APNS再将消息推送给目的iphone

可是,Andriod就没有向APNs这样的好东西了,怎么办?好,极光推送可以解决。详细的请看下图:

Conn负责与手机端保持一个长连接,具体长连接的实现细节咱们暂且不说(通过系统时钟降低CPU消耗、利用多核优势增加链接数量什么的。具体可见博文:http://www.cnblogs.com/manuosex/p/3660727.html),我们很容易发现,其实JPush的核心实现实际上就是模仿了一个APNs。

好,既然iOS实现推送这么牛,为什么iOS还要使用jPUSh这种第三方服务呢?

答案就是:iOS这套东西配置起来太繁琐了。(具体如何能让iOS实现推送功能,可参见博文:http://blog.csdn.net/shenjie12345678/article/details/41120637)来回下载证书,上传证书就要设置半天,主要难点就是将自己的信息上传到APNs然后获得对应的唯一ID(一般叫deviceToken),所以极光推送做的其实也就是在上边说的这样一部简化了一下。直接将证书上传到极光推送网站,手机APP安装后通过和极光服务器链接,极光服务器做好响应的处理后再和APNs链接,注册好这些deviceToken,分发出来,由极光服务器转发给手机APP,手机APP再传给服务器端,下次服务器想要推送消息的时候,直接调用极光API,就会将消息发送给APNs,APNs再将消息发送给手机端。其实在某种程度上说,也只是在iOS原生的推送机制上做了一层封装,简化了配置操作而已。

从极光推送的实现原理概括iOS和Andriod推送原理相关推荐

  1. 极光为华硕 ROG 游戏手机 3 搭建符合统一推送联盟标准的推送系统

    2020年7月23日,华硕 ROG 游戏手机3正式发布.该款手机为 ROG 玩家深度定制,旨在提供专属沉浸式游戏体验.华硕在发布会上同时宣布,由其合作伙伴.中国领先的移动开发者服务提供商极光(Auro ...

  2. iOS极光推送带图片模式(Service Extension)推送右侧出现图片

    最近工作中新增一个告警推送带图片的需求,要求在云端服务器向极光推送图片地址,APP在收到推送消息以后能够将地址对应的图片下载完成并显示在推送栏右侧,经过一段时间对极光推送官方文档和iOS10新特性Se ...

  3. iOS 远程消息推送,原理和开发详解篇(新手推荐)

    1.APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 Provider就是我们自己程序的后台服务器,APNS是Apple Push Notification Servic ...

  4. 深入解析消息推送平台的设计原理,百万门店同时推送消息是如何实现的?

    简介 现有项目中存在需要针对百万门店同时推送消息的需求,需要设计一个消息推送中心的系统进行专门的消息推送 需求 对百万门店进行消息推送 支持坐席侧websocket实时推送消息通知客服需要注意的事项 ...

  5. ios 之apns推送

    每次看到iOS的远程消息推送,总是感觉很头大,即便后来项目都做完了,还是觉得摸不着远程推送的脉门,网上介绍的资料虽多,但不是写的太简单了,就是写的太详细了,不能一下抓住要点,今天终于能够抽出点时间,来 ...

  6. uniapp使用unipush推送及java后台推送代码(含本地打包apk使用unipush推送)

    你懂的,又是项目用到了,作为程序猿义无反顾需要定时 "进化" ,硬头皮去写,虽然曾经作为android开发者写了很多的推送,但是uniapp的推送也是有所差异的,记录一下,以后留用 ...

  7. (0084)iOS开发之测试iOS远程消息推送

    iOS远程消息推送 当我们生成推送证书,安装到本地后,开启工程的 推送能力! 注意:记得把手机的推送权限要打开! iOS远程推送通过APNs实现 APNs是Apple Push Notificatio ...

  8. iOS点击推送消息跳到应用指定页面

    现在的推送用的越来越频繁,几乎每个应用都开始用到了.其实又有几个用户会去看推送消息呢?没办法,产品经理最大啊,只是苦了我们这一帮程序员啊!闲话少说,进入正题.兄弟我用的是极光推送,自然是以极光推送为例 ...

  9. iOS 点击推送消息跳转指定界面 —总结篇

    收到推送的准备: 首先至于说消息推送的原理,证书配置等等这些我在这里就不在累述,有很多写的很好的文章相信您已经可以搞定这块,这里我重点讲下各种情况下的跳转处理. 复制代码 ####点击推送触发的几个方 ...

最新文章

  1. 解决uni-app ios唤起扫码操作,总是要刷新才可以唤起的问题
  2. silver light
  3. Jquery入门学习第三篇
  4. php.ini配置文件
  5. MacBookpro安装mysql教程_mac安装mysql的两种方法
  6. python关闭线程池_python线程池
  7. Win10 OPNET14.5+VS2010 安装教程
  8. LTE物理层一些基本概念
  9. 电源压敏电阻的计算选择
  10. 拼多多百亿补贴商品详情数据抓取
  11. 服务器重启后samba启动不了,提示stop: Unknown instance: smbd start/running, process 76585
  12. 托利多bcom电子秤常用设置
  13. 用Word转换向导批量转换Word文档(转)
  14. 即时编译器的中间表达形式(IR)
  15. 1.第一节课,从头开始学C语言
  16. 【论文笔记】MV3D:Multi-View 3D Object Detection Network for Autonomous Driving
  17. 拆分句子成为一个个单词,并统计各个单词的数量
  18. 小姐姐教你用代码画画,真大佬!
  19. 课时11:列表:一个打了激素的数组2
  20. jmeter批量上传图片, csv文件参数化——详细讲解

热门文章

  1. 基于国密SM3算法(openssl接口)密钥派生函数KDF的实现
  2. 如何应对AIoT对芯片的碎片化需求?
  3. 高人气蓝牙耳机推荐,2023年值得入手的四款蓝牙耳机
  4. 都是写进合同,说是15薪,如今真的一点办法都没有了吗?剩下的人都无心干活,都盼
  5. 小学六年级下册计算机授课内容,清华大学出版社版小学六年级下册信息技术教案课程.doc...
  6. MySQL5.7免安装教程
  7. 中国矿业大学软件工程菜鸟笔记
  8. 【高德地图API】如何进行坐标转换?坐标拾取工具
  9. 【linux】删除命令
  10. oracle学习之路(2)Navicat Premium 15 连接Oracle 数据库(图文教程)