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的证书以及证书密码传给个推即可
目录
相关文章
|
6月前
|
数据安全/隐私保护 iOS开发
使用HBuilder平台打包并上传iOS应用到App Store的完整教程
使用HBuilder平台打包并上传iOS应用到App Store的完整教程
|
8月前
|
监控 Android开发 iOS开发
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
参考代码:弹性扩缩容如何实现?System.out.println("扩容:增加直播平台实例"); currentCapacity++; } private void scaleDown() { System.out.println("缩容:减少直播平台实例");
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
|
1天前
|
存储 缓存 安全
基于iOS平台的高效图片缓存策略实现
【4月更文挑战第22天】 在移动应用开发中,图片资源的加载与缓存是影响用户体验的重要因素之一。尤其对于iOS平台,由于设备存储空间的限制以及用户对流畅性的高要求,设计一种合理的图片缓存策略显得尤为关键。本文将探讨在iOS环境下,如何通过使用先进的图片缓存技术,包括内存缓存、磁盘缓存以及网络请求的优化,来提高应用的性能和响应速度。我们将重点分析多级缓存机制的设计与实现,并对可能出现的问题及其解决方案进行讨论。
|
1天前
|
存储 缓存 算法
实现iOS平台的高效图片缓存策略
【4月更文挑战第22天】在移动应用开发中,图片资源的处理是影响用户体验的重要因素之一。特别是对于图像资源密集型的iOS应用,如何有效地缓存图片以减少内存占用和提升加载速度,是开发者们面临的关键挑战。本文将探讨一种针对iOS平台的图片缓存策略,该策略通过结合内存缓存与磁盘缓存的机制,并采用先进的图片解码和异步加载技术,旨在实现快速加载的同时,保持应用的内存效率。
|
19天前
|
存储 缓存 iOS开发
实现iOS平台的高效图片缓存策略
【4月更文挑战第4天】在移动应用开发中,图片资源的加载与缓存是影响用户体验的关键因素之一。尤其对于iOS平台,由于设备存储和内存资源的限制,设计一个高效的图片缓存机制尤为重要。本文将深入探讨在iOS环境下,如何通过技术手段实现图片的高效加载与缓存,包括内存缓存、磁盘缓存以及网络层面的优化,旨在为用户提供流畅且稳定的图片浏览体验。
|
1月前
|
运维 监控 安全
应用研发平台EMAS常见问题之sophix ios flutter热更新如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
77 0
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
192 2
|
2月前
|
监控 API iOS开发
克魔助手 - iOS性能检测平台
众所周知,如今的用户变得越来越关心app的体验,开发者必须关注应用性能所带来的用户流失问题。目前危害较大的性能问题主要有:闪退、卡顿、发热、耗电快、网络劫持等,但是做过iOS开发的人都知道,在开发过程中我们没有一个很直观的工具可以实时的知道开发者写出来的代码会不会造成性能问题,虽然Xcode里提供了耗电量检测、内存泄漏检测等工具,但是这些工具使用效果并不理想(如Leak无法发现循环引用造成的内存泄漏)。所以这篇文章主要是介绍一款实时监控app各项性能指标的工具,包括CPU占用率、内存使用量、内存泄漏、FPS、卡顿检测,并且会分析造成这些性能问题的原因。
|
7月前
|
开发工具 Android开发 iOS开发
Android、iOS平台RTMP/RTSP播放器实现实时音量调节
介绍移动端RTMP、RTSP播放器实时音量调节之前,我们之前也写过,为什么windows播放端加这样的接口,windows端播放器在多窗口大屏显示的场景下尤其需要,尽管我们老早就有了实时静音接口,相对实时静音来说,播放端实时音量调节粒度更细,从[0, 100],用户体验更好。
128 1
|
4月前
|
API 开发工具 iOS开发
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
33 1