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

 更新时间:2016年04月26日 10:55:47   作者:凉凉_  
基于JSON的请求和响应对于每个通知,如果成功响应,将会返回200标识 - 不用再去猜测通知是否被接收到响应错误将会以JSON字符消息的长度从2048个字节增加到4096个字节连接状态可以通过HTTP/2的ping框架来进行检查.

苹果最近更新了他们的推送提醒服务协议,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年的新功能吧。

相关文章

  • ios中getTime()的兼容性实例代码

    ios中getTime()的兼容性实例代码

    在本篇文章里小编给大家整理的是关于ios中getTime()的兼容性实例代码,需要的朋友们可以学习下。
    2020-03-03
  • iOS捕捉截屏事件并展示截图效果

    iOS捕捉截屏事件并展示截图效果

    这篇文章主要为大家详细介绍了iOS捕捉截屏事件并展示截图效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 详解iOS获取通讯录的4种方式

    详解iOS获取通讯录的4种方式

    这篇文章主要为大家详细介绍了iOS获取通讯录的4种方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 详解IOS中如何实现瀑布流效果

    详解IOS中如何实现瀑布流效果

    说到瀑布流, 或许大家都不陌生, 瀑布流的实现也有很多种! 从scrollView 到 tableView 书写的瀑布流, 然后再到2012年iOS6 苹果API新加进的collectionView进行的瀑布流封装! 确实,不论是写起来还是用起来都要方便很多!那么下面一起来看看IOS中具体如何实现瀑布流效果。
    2016-08-08
  • iOS使用UICollectionView实现拖拽移动单元格

    iOS使用UICollectionView实现拖拽移动单元格

    这篇文章主要为大家详细介绍了iOS开发UICollectionView拖拽移动单元格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • iOS关于多张图片上传、地址返回顺序问题及解决方案

    iOS关于多张图片上传、地址返回顺序问题及解决方案

    这篇文章主要介绍了iOS关于多张图片上传、地址返回顺序问题,文章给大家带来了三种解决方案,通过实例文字说明相结合的形式给大家介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • iOS开发之XLForm的使用方法

    iOS开发之XLForm的使用方法

    这篇文章主要介绍了iOS开发之XLForm的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • iOS开发中使用UIDynamic来捕捉动画组件的重力行为

    iOS开发中使用UIDynamic来捕捉动画组件的重力行为

    这篇文章主要介绍了iOS开发中使用UIDynamic来捕捉动画组件的重力行为的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • iOS9苹果将原http协议改成了https协议的方法

    iOS9苹果将原http协议改成了https协议的方法

    这篇文章主要介绍了iOS9苹果将原http协议改成了https协议的方法的相关资料,需要的朋友可以参考下
    2016-01-01
  • iOS如何裁剪圆形头像

    iOS如何裁剪圆形头像

    这篇文章主要介绍了iOS如何裁剪圆形头像的方法,如何为圆形头像加边框,如何进行截图操作,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论