IOS平台的几个推送服务的对比

简介: <div class="multicntwrap"> <div class="multicnt"> <div> <h3 class="title pre fs1"><span class="tcnt">IOS平台的几个推送服务的对比</span>  <span class="bgc0 fc07 fw0 fs0"></span></h3> <p class="tdep clear
+关注继续查看

IOS平台的几个推送服务的对比  

2013-10-09 13:37:01|  分类: 云计算 |举报 |字号 订阅

       最近研究了一下极光推送(JPush),百度云推送和个推在IOS平台的推送机制,做了一下对比。
       首先, 介绍苹果推送通知服务的推送机制(APNS: Apple Push Notification Service):

IOS平台的几个推送服务的对比 - 黯然神伤 - DreamWill2013
                                                  图1  APNS的推送流程

上图清晰地展示了APNS整个工作流程,其中Provider是第三方开发者的服务器。整个流程分三个阶段:
  • 第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。
  • 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送iPhone。
  • 第三阶段:iPhone把发来的消息传递给相应的App,并且按照设定弹出Push通知。
极光推送(JPush):
      JPush在IOS平台上有完整的推送服务,他整个推送过程完全不依赖APNS的服务,也就是图1中的APNS变成了JPush自己的Push服务器。Iphone到Client App这个过程被简化了,JPush采用的是透传方式,消息的传递对于用户是透明的,不可见的,消息从JPush服务器直接就传到了Client App,用户无法感知。

百度云推送:
      百度云推送是基于APNS的,也就是说他仅仅是APNS的一个代理,他的推送过程如下图:

                      IOS平台的几个推送服务的对比 - 黯然神伤 - DreamWill2013
                                                     图2  百度云推送的推送流程(IOS)
 
 整个过程分为一下几个阶段:
  1. 管理控制台或者Server SDK初始化IOS App的证书(分为开发版证书和发行版证书)。
  2. 运行在手机上的Push SDK执行推送的初始化动作,将AppKey和DevicesToken上传给云推送服务器,服务器保留。
  3. 管理控制台或者Server SDK向云推送服务器发送一条推送指令,服务器接到指令后,将控制台传来的UserId(如果是广播没有UserId),Msg,与服务器保留的DevicesToken和证书一并打包传给APNS服务器。
  4. APNS接到数据后,根据UserId,将消息推送给指定的IPhone设备。

PushSDK 在APNS的编码基础上增加自己服务的初始化和绑定接口代码。


个推

     个推的做法就更简单了,他的整个交互图如下:

      IOS平台的几个推送服务的对比 - 黯然神伤 - DreamWill2013
                                                              图3  个推推送交互图(IOS)
       他对开发商的要求最高,他的官方论坛上有这么一句话:“开发者首先有一个自己的iOS推送组件,该组件可以实现从你们到苹果服务器的推送,根据我们提供的协议增加相应接口”。图3的右半部分,也就是第三方到APNS这个部分都是由第三方自己实现的,个推仅仅是实现个推服务器与第三方之间的交互。
       图中各个函数的含义:
  • auth():个推服务器向第三方发送“验证”指令,如果验证结果正确,则第三方返回Token,8个推服务器保留这个Token。
  • get_tags():个推服务器向第三方发送“获取tag”指令,第三方向个推服务器返回当前存在的tag列表,个推服务器保留。
  • push_by_tags():个推服务器根据保留的tag列表,可以选择向一些tag发送消息,讲“向tag发送消息”的指令传递给第三方,第三方完成消息发现送任务。
  • push_by_divece():个推根据divicesId调用第三方发送接口,完成发送任务。

纵观整个流程,个推服务器做的都是一些比较简单的事情,他要求第三方根据他的协议完成auth(),get_tags(),push_by_tags(),push_by_divice()接口,并给出API的地址,供个推服务器调用。笔者认为他这样做的原因是希望能够与android平台的推送共用一套系统,便于管理维护。

2014年2月25日更新:
   笔者今天去个推主页查看的时候发现个推的解决方案换了,个推最近自己提供了到APNS组件,这样第三方开发者就不需要自己实现到APNS的组件服务了,只需要把IOS的证书以及证书密码传给个推即可
目录
相关文章
|
1月前
|
数据安全/隐私保护 iOS开发
使用HBuilder平台打包并上传iOS应用到App Store的完整教程
使用HBuilder平台打包并上传iOS应用到App Store的完整教程
|
2月前
|
iOS开发 Perl
iOS平台上的AliVRPlayer的使用
iOS平台上的AliVRPlayer的使用
46 1
|
2月前
|
开发工具 Android开发 iOS开发
Android、iOS平台RTMP/RTSP播放器实现实时音量调节
介绍移动端RTMP、RTSP播放器实时音量调节之前,我们之前也写过,为什么windows播放端加这样的接口,windows端播放器在多窗口大屏显示的场景下尤其需要,尽管我们老早就有了实时静音接口,相对实时静音来说,播放端实时音量调节粒度更细,从[0, 100],用户体验更好。
|
2月前
|
开发工具 图形学 Android开发
Windows/Android/IOS平台如何在Unity3d播放RTSP/RTMP流
如果基于Unity3d完全重新开发一个播放器,代价大,周期长,不适合快速出产品,最好的方式就是集成现有Native平台上成熟稳定播放器.
|
3月前
|
监控 Android开发 iOS开发
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
参考代码:弹性扩缩容如何实现?System.out.println("扩容:增加直播平台实例"); currentCapacity++; } private void scaleDown() { System.out.println("缩容:减少直播平台实例");
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
|
4月前
|
开发工具 iOS开发 开发者
在iOS应用中接入阿里云的应用研发平台EMAS
在iOS应用中接入阿里云的应用研发平台EMAS
175 1
|
4月前
|
开发框架 Dart 开发工具
使用Flutter开发一套可同时运行在Android和iOS平台的代码
Flutter是一种跨平台移动应用开发框架,它允许开发者使用单一代码库构建高性能、美观且可在多个平台上运行的应用程序。本文将介绍如何使用Flutter开发一套同时适用于Android和iOS平台的代码。
|
6月前
|
Java 数据安全/隐私保护 iOS开发
Windows 平台上也可以进行 iOS App 的开发
为了将 iOS APP 上架至 App Store,我们需要准备以下基本需求资料:1. 苹果开发者账号(如果还没有账号,需要先申请,可以参考苹果开发者账号申请教程)
|
6月前
|
iOS开发
iOS设备支持的ARM平台
iOS设备支持的ARM平台
43 0
|
9月前
|
iOS开发
相关产品
云迁移中心
推荐文章
更多