苹果最近更新了他们的推送提醒服务协议,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年的新功能吧。
HTTP (HyperText Transfer Protocol, 超文本传输协议)是互联网上应用最为广泛的一种网络协议,它是基于 TCP 的应用层协议,简单地说就是客户端和服务器进行通信的一种规则,它的模式非常简单,就是客户端发起请求,服务器响应请求。 HTTP 最早于 1991 年发布,是 0.9 版,不过目前该版本已不再用。HTTP 目前在使用的版本主要有: HTTP/1.0,于 1996
HTTP/2基于HTTP语义提供了优化的传输机制。HTTP/2 支持所有HTTP/1.1的核心特性,并在如下几个方面对其进行了改进。 HTTP/2中基础的协议单元是帧(见第4.1节)。每个类型的帧都服务于不同的目的。例如 HEADERS和DATA 帧构成了基本的HTTP请求与应答(8.1节); 其他诸如SETTINGS, WINDOW_UPDATE, PUSH_PROMISE等帧类型用于支持其他的
本服务条款(以下简称“本协议”)由北京百度网讯科技有限公司(以下简称“百度”)与您(以下简称“您”或“用户”)订立,用于规范您对百度统计(以下简称“本服务”)的使用。只要您点击 “确定”按钮、完成注册程序或开通、使用本服务,即代表您已理解并同意本协议,特别是以黑体字标示出的关于百度统计及您重大权益的条款均以知晓、理解并接受,同意将其作为确定双方权利义务的依据。如果您不同意本协议,请您立即停止使用本
京东小程序开放平台开发者服务协议 【请认真阅读并理解以下内容,其中以加粗方式显著标识的文字,请着重阅读、慎重考虑】 前言 1、本协议由拟在京东小程序开放平台(以下或简称“京东小程序平台”或“小程序平台”)开发京东小程序(以下或简称“小程序”)的京东小程序开发者(以下简称“开发者”,“乙方”或“您”)与京东小程序开放平台运营方(以下或简称“京东”或“甲方”)共同缔结,具有合同效力。 2、本协议由协议
1.1. Rokid 开发者社区服务协议 1.1.1. 一、定义 1.2. 二、协议构成 1.3. 三、特别提示 1.3.1. 四、甲方服务内容 1.3.2. 五、开发者承诺和服务使用规范 1.3.3. 六、数据及隐私 1.3.4. 七、服务费用及开发者收费 1.3.5. 八、违约责任 1.3.6. 九、协议的解除和转让 1.3.7. 十、服务终止后的处理 1.3.8. 十一、责任限制和免责 1.
为了营造规范、有序、安全的开发者社区环境,并利用先进的互联网技术给用户带来便利或更好的体验,芋头科技(杭州)有限公司(下文简称“甲方”)与您(以下简称“开发者”或“乙方”)就开发者社区的使用等相关事项,在杭州市余杭区签订本协议。 特别提示: 开发者通过网络页面点击确认或以其他方式选择接受本协议或使用开发者社区的服务,即表示开发者同意并接受本协议条款,请开发者仔细阅读本协议的全部内容(特别是以粗体标