iOS10推送教程详解

2020-01-18 13:49:09王冬梅

上个月接到一个需求,做ios10的推送,意图冲击AppStore头条.瞬间抓狂,工具都还没有,于是赶紧安装xcodeBeta版,ios10Beta版,然后就开始无尽的查资料,毕竟新功能,毕竟没做过........不过还好,在发布会之前赶出来了,由于本人比较懒,拖到现在才写出来,接下来就是见证奇迹的时刻!

原理

iOS推送通知,iOS推送原理,iOS远程推送,iOS10推送教程

图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。

APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。

上图可以分为三个阶段。

第一阶段:.net应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。

第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。

第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。

iOS推送通知,iOS推送原理,iOS远程推送,iOS10推送教程

从上图我们可以看到。

1、首先是应用程序注册消息推送。

2、IOS跟APNS Server要deviceToken。应用程序接受deviceToken。

3、应用程序将deviceToken发送给PUSH服务端程序。

4、 服务端程序向APNS服务发送消息。

5、APNS服务将消息发送给iPhone应用程序。

xcode8以后测试环境证书就可以自动生成了,所以就不再多说.

创建

很久以前写过ios9的today extension,与其类似,同样需要创建一个target,

iOS推送通知,iOS推送原理,iOS远程推送,iOS10推送教程

如图,Notification Content负责自定义通知UI,Notification Service Extension负责接收并处理数据

iOS推送通知,iOS推送原理,iOS远程推送,iOS10推送教程

正活
ios的拓展类是不能独立联网请求数据的,但是之前做today的时候查过一些别的app,下拉通知栏的时候有些app可以抓到包,估计是单独做了一个网络请求的封装,只是瞎猜,如有雷同,纯属巧合.但是通知就不用那么麻烦了.首先从网上随便挑选一张图片(限定https协议): https://www.easck.com/__sized__/scene/2c0f3bdb7715fed7190fd87e5e5340e4-1473387950-crop-c0-5__0-5-590x442-85.jpg ,推送格式和可以自选,详情可见: https://www.easck.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html .