HTTP/2 协议用于 iOS 推送提醒服务 (APNS)_IOS

苹果最近更新了他们的推送提醒服务协议,APNS。这个新版本的协议基于HTTP/2和JSON,相比于旧的二进制协议,新的协议有了巨大改进。

新的APNS协议基于HTTP/2:

新的特性和功能:

基于JSON的请求和响应

对于每个通知,如果成功响应,将会返回200标识 - 不用再去猜测通知是否被接收到

响应错误将会以JSON字符的形式返回

消息的长度从2048个字节增加到4096个字节

连接状态可以通过HTTP/2的ping框架来进行检查

支持主题

通用的推送证书 - 开发和生产使用同一个证书即可

旧的APNS二进制协议

旧的二进制APNS协议有点奇特,一般来说,推送分发的服务器要打开一个同APNS网关服务器的socket连接,并保持这个连接。在旧的协议下,如果服务器响应成功的话,你将不会收到任何回应,但是如果服务器响应失败(例如,使用了一个非法的Push token),服务器将返回了一个错误编码,并关闭这个socket。最重要的是,你必须重新发送使用这个无效token以后发送的所有通知。因此,你可能一直不能确定你的推送是否成功的被服务器接收。许多系统使用这个漏洞,故意发送一个错误的token,这些黑客行为将导致系统性能低下。苹果有一个名为"feedback"的服务,我们可以定时调用这个服务来获取invalid tokens的列表。这个服务你只要调用一次就可以获得所有的invalid tokens 列表。所以,如果一个应用有许多推送通知提供商,他们将会争夺资源去轮询查找invalid tokens列表。invalidtoken越多,你系统性能将越低,所以APNS只要一发生错误就关闭这个连接。

不过仍然还有一些限制。获取TLS证书比较复杂,而且存储-转发能力弱爆了,APNS在设备下线的时候只保留一个通知,并且设备上线之后也不会向服务器上传信息,Google Cloud Messaging就有所有这些特性。

考虑到GCM现在也支持iOS设备了,那么APNS和GCM现在形成了竞争关系。让我共同期待APNS在2016年的新功能吧。

时间: 2024-10-06 21:01:01

HTTP/2 协议用于 iOS 推送提醒服务 (APNS)_IOS的相关文章

iOS推送的那些事_IOS

直接切入主题,讲讲如何模拟推送以及处理推送消息.在进入主题之前,我先说几个关键流程: 1.建Push SSL Certification(推送证书) 2.OS客户端注册Push功能并获得DeviceToken 3.用Provider向APNS发送Push消息 4.OS客户端接收处理由APNS发来的消息 推送流程图: Provider:就是为指定iOS设备应用程序提供Push的服务器.如果iOS设备的应用程序是客户端的话,那么Provider可以理解为服务端(推送消息的发起者)APNs:Apple

iOS推送之本地通知UILocalNotification_IOS

摘要: Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程.本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notifi

ios开发:用PHP实现IOS推送

 ios推送消息是个非常有用的功能,许多应用程序都具备了这个功能,成为实时应用的数据流核心.那么我们怎么用php为ios做推送服务呢?下面本文章将为您进行详细讲解. ios消息推送机制可以参考ios消息推送机制实现与探讨. 首先,需要一个pem的证书,该证书需要与开发时签名用的一致. 具体生成pem证书方法如下: 1. 登录 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/i

iOS实现消息推送及原理分析_IOS

一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]): 2.APNS:Apple Push Notification Service[苹果消息推送服务器]: 3.iPhone:用来接收APNS下发下来的消息: 4.Client App:IOS设备上的应用程序,用来接收iphone传递APNS下发的消息到制

iOS自定义推送消息提示框_IOS

看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢?  因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消息推送的时候 如果用户当前不在客服界面的时候  要求无论是在app前台 还是app退到后台 顶部都要弹出系统的那种消息提示框 这样的需求 我们就只能自定义一个在app内 弹出消息提示框   实现步骤如下:  1.我们自定义一个view 为 STPushView 推送消息的提示框view  #imp

php ios推送(代码)

本篇文章是对php ios推送进行了详细的分析介绍,需要的朋友参考下   复制代码 代码如下: <?php //php需要开启ssl(OpenSSL)支持 $apnsCert = "ck.pem";//连接到APNS时的证书许可文件,证书需格外按要求创建 $pass = "123456";//证书口令 $serverUrl = "ssl://gateway.sandbox.push.apple.com:2195";//push服务器,这里是

rsmb mqtt ibm-我在本地ubuntu14.04上用mqtt协议一进行推送,没问题。

问题描述 我在本地ubuntu14.04上用mqtt协议一进行推送,没问题. 但是我把rsmb放到云上去,一运行./broker就出错! 请问大神们,这可能会是什麼问题.在线等wx@iZ94j7chg9sZ:/var/www/html/rsmb_1.2.0/linux_ia64$ ./broker 20141215 093316.281 CWNAN9999I Really Small Message Broker20141215 093316.282 CWNAN9997I Licensed Ma

iOS实现远程推送原理及过程_IOS

推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题.那么首先让我们准备一些做推送需要的东西.我们需要一个付费的苹果开发者账号(免费的不可以做远程推送),有了开发者账号,我们可以去苹果开发者网站,配置自己所需要的推送的相关证书.然后下载证书,供我们后面使用,详细的证书配置过程,我们下面再说. 首先我们要说说iOS推送通知的基本原理: 苹果的推送服务通知是由自己专门的推送服务器AP

ios 推送真机无法接收不到

问题描述 ios 推送真机无法接收不到 http://blog.csdn.net/shenjie12345678/article/details/41120637我是按照这个博客来配置推送的证书的,php服务端显示消息已经推送出去了,可是我的真机没有收到,会是什么原因造成的呢?该如何解决.手机的通知已经打开,APPID应该也是没问题的 解决方案 https://www.jpush.cn/qa/?qa=9651/%E6%94%B6%E4%B8%8D%E5%88%B0%E6%8E%A8%E9%80%