以前从没玩过远程通知,对远程通知的概念也是一无所知,当面对这片汪洋大海时,更是一脸茫然。为了满足自己的一点点好奇心,于是花了半天看了一遍官方文档Local and Remote Notification Programming Guide。接着就尝试着写了一个Demo,并集成JPushSDK,实现简单的远程通知推送功能。
概念
当手机app没有在前台运行时,有两种方式将新的数据推送给用户。一种是本地通知,另一种是远程通知。
- 本地通知:应用程序在本地配置通知详细信息,并将这些详细信息传递到系统,然后当应用不在前台时,在指定的时间或地点触发通知。常用来定时提醒用户完成一些任务,比如提醒事项。
- 远程通知:使用公司服务器(或第三方服务器)通过APNs(Apple Push Notification service)将数据推送到用户设备。
为什么会出现远程推送通知?
- 传统获取数据的局限性,只有在app开启时才能获取到数据。只要用户关闭了app,就无法与服务器请求数据,也就不能实时更新数据。
- 远程推送可以解决这个问题,即使用户关闭了app,只要联网了,并且打开了app通知权限,就可以接收到服务器推送的远程通知。
远程推送机制
Paste_Image.png
- app应用程序向iOS系统注册APNS消息推送功能,iOS系统请求APNS获取device token(设备令牌)
- APNS将device token返回给app
- app 将device token 发送给本地Push服务器
- 在需要为应用推送消息时,本地Push服务器会将消息和device token打包发送给APNS
- APNS获取device token并解码,把推送消息发送给手机app
将远程通知传递给app过程
屏幕快照 2017-03-03 下午4.53.48.png
管理deviceToken
屏幕快照 2017-03-03 下午4.55.18.png
使用deviceToken标识设备
屏幕快照 2017-03-03 下午4.56.22.png
本地Push服务器获取deviceToken过程
屏幕快照 2017-03-03 下午4.58.27.png
配置相关证书
- 进入苹果开发者网站登录账号后,选择Certificates,Identifiers&Profiles -> Identifiers -> App IDs
Paste_Image.png
2.选择对应的App ID,打开Edit
Paste_Image.png
3.勾选 Push Notifications -> create Certificate
Paste_Image.png
4.创建开发环境下和生产环境下的SSL证书
Paste_Image.png
Paste_Image.png
选择生成的CSR文件后点击继续
Paste_Image.png
6.生成开发环境下SSL证书,下载后双击
Paste_Image.png
7.采用同样的方式生成生产环境下SSL证书,最后在钥匙串中有两个证书
Paste_Image.png
8.把这两个都导出为个人信息交换文件(.p12),在后续的JPush推送的时候需要使用。
Paste_Image.png
在钥匙串访问中创建CSR文件流程
1.钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书
Paste_Image.png
2.输入用户电子邮件地址 和 常用名称 -> 继续
Paste_Image.png
3.生存CSR文件。
Paste_Image.png
JPush推送
1.登录账号
2.选择应用管理
3.创建应用
4.填写相关信息
Paste_Image.png
5.创建应用成功后获取AppKey
Paste_Image.png
6.按照JPush提供的文档集成,文档写的很详细。
Paste_Image.png
远程通知推送效果图(只能够真机测试)
JPush服务器端发送通知信息
Paste_Image.png
手机端接收到通知信息
Paste_Image.png