iOS应用Push功能从0到1

APNs(Apple Push Notification service)是一种供应用程序开发人员将信息传播到iOS、tvOS和macOS设备上的服务。在用户设备上首次启动应用程序时,系统会自动在App和APNs之间建立经过认证、加密并且持久的IP连接,以保证App能够接收通知。

本文的主要内容有两个,一个是介绍Push证书的相关知识;二是如何创建Push证书并且导出对应的p12文件。

1、Push分类

通常iOS Push可以分为三种类型:

  1. 在线Push:即时通讯App通常会使用这种类型的Push,比如QQ、微信等App会通过IM自建的网络长连接将聊天消息和指令进行推送。
  2. 本地Push:iOS本地通知会使用这种类型的Push,比如闹钟的定时提醒,邮件的提醒事项等。
  3. 远程Push:也就是开篇提到的APNs,这也是本篇文章要介绍的内容。使用这种类型的Push,即使App处于后台或者完全被杀死的情况下,仍然能够通过网络获取到推送消息。

2、Push原理

Push原理

整个过程分为三步:

  1. Provider相当于自己的服务器,首先Provider将要发送的消息以及目标设备的标识(device token)发送给APNs
  2. 其次APNs收到后在已注册的Push服务设备列表中查找对应的设备,并将消息发送给该设备
  3. 最后iOS设备接受到消息后传递给相应的应用程序,并按照设定的提醒风格展示在设备上。

备注:

device token是APNs用于区分识别每个iOS设备和设备上不同app的一个标识符,还可以用于APNs通过它将推送消息路由到指定设备上

APNs uses device tokens to identify each unique app and device combination. It also uses them to authenticate the routing of remote notifications sent to a device

To protect user privacy, do not use device tokens to identify user devices. Device tokens change when the user updates the operating system and when a device’s data and settings are erased. As a result, apps should always request the current device token at launch time.

3、工作流程

Push工作流程

工作流程分为五步:

  1. App首先要向APNs注册推送服务,注册成功后会返回一个device token,这是iOS设备的唯一标识。
  2. App接收APNs返回的device token。
  3. App将返回的device token发送给自己的Push服务端,完成整个注册服务过程。
  4. 当有需要Push的消息是,服务端将Push消息和目标设备标识(device token)按照APNs指定的格式打包发送给APNs。
  5. APNs接收到Push服务端发送的消息后,根据device token查找对应的iOS设备,并将该消息发送给目标iOS设备。

4、Push证书

整个Push过程最重要的一环:Push证书,基于Push证书的身份验证,应用程序和APNs之间才能建立安全可靠的链接。Push证书有效期为一年,为了避免Push服务终端,一定要记得在过期之前更新证书。下面我们来看下如何注册Push证书。

1.创建CSR文件

  • CSR(Certificate Signing Request)文件是用来创建私钥的,生成办法如下:打开钥匙串访问.app,选中钥匙串访问--证书助理--从证书颁发机构请求证书...,如下图所示
CSR文件01
  • 选择“从证书颁发机构请求证书...”后,弹出证书相关信息,用户电子邮件和常用名称可以随便填,这里我填写的是个人公司邮箱账号和个人姓名全拼,然后下边选择“存储到磁盘”,如下图所示
CSR文件02

最后选择“继续”将后缀为certSigningRequest的CSR文件导出到本地即可。

2.创建Push证书

  • 登录苹果开发者账号,选择左侧的Certificates, IDs & Profiles进入证书相关页面,打开页面后在左侧俩表中选择Certificates下边的All,右侧显示出所有的证书列表。选择右上角+号,开始创建Push证书。
证书创建01
  • 此时会有两种证书类型需要选择:开发证书(Development)和生产证书(Product),前者只能用于开发环境测试使用,后者用于生产环境正式使用(App Store App Push使用)。如下图所示,我们选择一种后,点击continue,进入下一步。
证书创建02
  • 这一步要选择对应的App ID,它是使用你的应用程序Bundle ID创建的。如下图所示,选择完毕后点击continue,进入下一步。
证书创建03
  • 这一步是要让创建一个CSR文件,之前已经将CSR文件创建好放在本地了,所以直接点击continue,进入下一步。
证书创建04
  • 这一步是上传CSR文件,选择Choose File...将创建好的CSR文件上传,点击continue,证书创建完毕。将创建好的证书下载到本地,双击打开即可将证书添加到钥匙串访问.app中。
证书创建05

3.导出Push证书

  • APNs证书是一种扩展名为p12的文件,它是我们发消息给APNs的证明。打开钥匙串访问.app,找到要导出的证书,选中右键选择导出,如下图所示
导出证书01
  • 填写要保存的文件名和要保存的位置,,点击save,弹出密码设置页面,这个密码Push服务端同学会用到,务必保存好。
导出证书02

证书导出成功,将导出的p12文件发送给负责Push功能的服务端同学。

如果想要完整的完成Push功能,还要在Xcode里边做相应的参数设置和代码开发,这里不再赘述,如有兴趣可以自行研究。

参考

官方文档
史上最全iOS Push技术详解

你可能感兴趣的:(iOS应用Push功能从0到1)