iOS之 APNs全新的APNs苹果15年WWDC大会上的干货
记得14年在dl某大学校招上现场面试iOS时候被问到了APNs也就是苹果的推送问题,当时我表示一脸懵逼,因为当时还没有真正接触做过项目也就了解了个大概,总之当时回答的一塌糊涂!后来回去就在网上仔细查了一下关于推送的文章,这也是我iOS道路上第一次接触APNs。
推送,大多数app都是引入的三方推送,大家也都知道的那些什么,友盟,百度 ,等等就不一一列举,但是在某些时候这些推送的成功率超级低,还有就是对于开发人员的调试上让人觉得繁琐,比如在推送证书的选择上,什么生产环境推送证书、测试环境推送证书、tvOS推送证书、watchOs推送证书、VoIP推送证书。换来换去的很可能出现混乱。不过上述的诸多问题在15年底也就是15年12月的WWDC上苹果做出了颠覆性的修改
这里打个比方对新旧推送机制的区别,原来的推送有点类似udp传输并不能确定你发出的消息对面是否接受成功换句话说成功与否发出方不会有任何监听,在新的推送中采用的HTTP/2协议后,在每次发出推送消息后APNs服务器会回一个200ok而且推送消息的最大长度也提升到4KB 这里(个人理解如有错误,虚心听受。)
来看下新版的 APNs 的新特性:
1)Request 和 Response 支持JSON网络协议
2)APNs支持状态码和返回 error 信息
APNs推送成功时 Response 将返回状态码200,远程通知是否发送成功再也不用靠猜了!
APNs推送失败时,Response 将返回 JSON 格式的 Error 信息。
3)最大推送长度提升到4096字节(4Kb)
4)可以通过 “HTTP/2 PING ” 心跳包功能检测当前 APNs 连接是否可用,并能维持当前长连接。
5)支持为不同的推送类型定义 “topic” 主题
6)不同推送类型,只需要一种推送证书 Universal Push Notification Client SSL 证书。
通过以上文字我们可以得知的就是我们队APNs的发送成功率肯定是可以保证的,但是APNs在去推送到你要发送的设备那就不能保证了,这个得看看苹果服务器的心情了,简单点说,当Apple Pay出来的时候也不是所有的iPhone用户都在同一时间收到推送。期待今年的WWDC苹果去完善吧。
本文只做自己学习的一个记录,如有错误请帮忙指出!
iOS之 APNs全新的APNs苹果15年WWDC大会上的干货的更多相关文章
- iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐
代码地址如下:http://www.demodashi.com/demo/13208.html 前言 我们首先要在AppDelegate里面进行iOS的适配,可以参考这篇文章 iOS原生推送(APNS ...
- 吴恩达讲了干货满满的一节全新AI课,全程手写板书充满诚意非常干货
吴恩达讲了干货满满的一节全新AI课,全程手写板书充满诚意非常干货 摘要: 目前,AI技术做出的经济贡献几乎都来自监督学习,也就是学习从A到B,从输入到输出的映射.现在,监督学习.迁移学习.非监督学习. ...
- iOS开发之功能模块--Apns推送中的的json格式介绍
在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 a ...
- iOS的推送机制APNs:本地推送&远程推送
本地推送: 本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒.本篇不做详细描述. 远程推送:APNS(苹果推送通知服务) iOS远程推送机制的原理及流程: 注册推送(橙色部分):若该Ap ...
- iOS 原生推送(APNS)的实现
1.前期准备工作 创建你的APNs keys 或者 创建推送证书,这两个创建一个即可实现推送.这两个创建一个即可实现推送.这两个创建一个即可实现推送.重要的事情说三遍,我看评论区有小伙伴误解. 1. ...
- iOS 消息推送实现 APNS
本文只是记录一下如何在自己的电脑上配置APNS推送环境,其它的如推送的原理,流程什么的这里就不写了. 一. 去Apple 开发者中心,创建App ID.注意App ID不能使用通配符.并注意添加Pus ...
- Clojure:两步发送iOS推送通知(apns)
首先在project.clj中,添加对notnoop 类库的引用:[com.notnoop.apns/apns "0.2.3"] 然后使用如下方法就可以发送推送消息了: (ns d ...
- XE6 & IOS开发之开发者账号、苹果证书(3):关于在XE6中使用苹果证书的简单介绍
网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.关于在XE6中使用苹 ...
- XE6 & IOS开发之开发者账号、苹果证书(1):关于开发者账号
网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 关于苹果开发者账号, 注 ...
随机推荐
- 使用CSS3对链接颜色与下划线进行优化
效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 使用nodejs+express(4.x+)实现文件上传
最简单的做法是通过“connect-multiparty”中间件实现上传. 通过在项目中npm install connect-multiparty进行安装. 用法: var multipart = ...
- 优化Angular应用的性能
MVVM框架的性能,其实就取决于几个因素: 监控的个数 数据变更检测与绑定的方式 索引的性能 数据的大小 数据的结构 我们要优化Angular项目的性能,也需要从这几个方面入手. 1. 减少监控值的个 ...
- App单个页面的最佳文本框个数是多少个?
[1].不同大小的手机屏幕,对应的App每页最佳文本框个数,是不同的. [1.1]如果是iPhone4的屏幕尺寸,分辨率为640x960px的时候, 文本框个数最大值为:2个文本框 [计算公式] 第 ...
- C# POST Https请求的一些坑
写在前面: 从上次,跟合作方的站点对接开始就产生了这个问题,当时用C#进行POST提交,总是会出现问题,找了很久发现对方的站点居然是TLS 1.2 的. 正文: 然而,在.NET FrameWork ...
- Nofuser - deobfuscator for Confuser
google搜索了好久,最终找到这个工具,可直接使用. 虽然脱后有很多无用代码,但关键代码是还是很清晰的! ----------------------------NoFuser----------- ...
- Support for multiple result sets
https://blueprints.launchpad.net/myconnpy/+spec/sp-multi-resultsets Calling a stored procedure can p ...
- Delphi 10.1 Berlin 官方未列之修正
Delphi 10.1 Berlin 官方修正列表: Bug fix list for RAD Studio 10.1 Berlin Delphi 10.1 Berlin 官方未列之修正: 修正 iO ...
- EasyUI-扩大在DataGrid显示次网格的行
一.下载并引用:datagrid-detailview.js脚本文件 二.添加UrlInfo控制器,添加Index页面代码如下: @{ Layout = null; } <!DOCTYPE ht ...
- 【算法和数据结构】_12_小算法_abs_fabsf_fabsd_大端小端判断
最近学习要用到求绝对值函数,看了一下有很多种的abs函数,因此想自己实现这些代码. 下面是我进行测试的代码: #include <stdio.h> typedef unsigned int ...