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

       最近研究了一下极光推送(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: Gateway worker是一种可以将消息推送到APP iOS和Android的解决方案。通常情况下,这种技术需要服务器端与客户端进行交互来传达消息,但是Gateway worker的出现可以极大地简化这个过程,将消息的传递变得更加高效和简便。 Gateway worker的实现方法比较简单,需要在服务器端添加一个插件,使其可以与客户端实现双向通信。这个插件需要支持Swoole协议,这是一种最为流行的网络通信协议。通过这个插件,HTTP请求可以转换为WebSocket请求,从而实现推送消息的功能。 在使用Gateway worker推送消息时,通过设置一个设备ID和Token,可以将消息推送iOS或Android设备。这个过程非常快速,基本上可以在几毫秒内完成。因此,Gateway worker尤其适合需要进行实时信息推送的应用程序。 在总结上述,Gateway worker可以快速高效地将消息推送到APP iOS和Android,通过设置设备ID和Token,可以实现消息的快速传递。Gateway worker主要基于Swoole协议和WebSocket通信协议,因此在使用前需要对这些技术进行深入理解。但是,一旦掌握了这些知识,使用Gateway worker将变得非常容易和便利。 ### 回答2: Gatewayworker是一款支持消息推送的工具,可以将推送的消息通过网关传输到移动应用程序(如iOS和Android)。使用Gatewayworker消息推送服务,需要先在开发者平台上创建一个应用程序,并生成对应的应用程序ID和应用程序Key。 在应用程序中,需要将Gatewayworker SDK集成到应用程序中,将应用程序ID和应用程序Key配置为Gatewayworker SDK的参数,并获取设备标识符(如设备ID、APNS或GCM的token等)。在使用Gatewayworker SDK的过程中,需要先向Gatewayworker服务器注册设备,然后才能够向设备推送消息。 要推送消息到设备,在应用程序中需要将消息封装为Gatewayworker SDK支持的格式,并指定接收消息的设备标识符。然后,将消息发送到Gatewayworker服务器,并由Gatewayworker服务器转发到接收方设备。接收方设备通过Gatewayworker SDK接收推送的消息,并在应用程序中处理消息。 总的来说,Gatewayworker是一个强大的推送服务工具,使得移动应用程序开发人员可以方便地向iOS和Android设备推送消息,提高了应用程序的使用体验和用户满意度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值