iOS APNs: 静默推送
最近在看人工智能相关的知识,无意中发现了一个巨牛的 人工智能教程,分享一下给大家。
教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点 这里 可以直接看教程。
今天跟大家介绍一下 ios 的静默推送功能。
静默推送,简单来说就是通过推送实现用户无感知的消息通知。
该系列博文:
iOS APNs: 远程推送
iOS APNs: 本地推送
iOS APNs: 处理数据
iOS APNs: 静默推送(本篇)
普通推送
例如微信,好友给你发送了一条消息,你的微信APP 在后台, 此时会收到带声音的一个消息提示。
这条推送机油有文字又有声音,点开这个推送可以直接打开 APP.
从程序的角度来讲,进入 App 后会调用下面的方法:
iOS10.0.x 和其之前的系统调用下面的方法:
1 | - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo |
iOS10.0.x 之后的系统,会调用如下的方法:
1 | - (void)application:(UIApplication *)application |
静默推送的异同
1.没有弹出框
没有推送的弹框出现,用户毫无感知的接收到了这个推送消息. 有 润物细无声
的感觉。
该推送既没有文字又没有声音。
2.需要用户授权允许推送
这个跟普通推送一样,都需要用户授权才可以推送。
3.会执行代理方法
静默推送来的时候,也能执行上面的回调方法。执行上面方法的场景如下:
1.App 在前台.
2.App 在后台, 但是没有被 kill 掉.
4.iOS7 以后才有的
对于 iOS 之前是没有静默推送的。
5.可以延长后台时间
收到静默推送后,在应用程序挂起之前有 30 秒左右可以执行相关的操作。
6.推送频率的控制
静默的推送是苹果推送服务器控制推送频率的。
苹果推送服务根据后台推送任务的能耗(用电量,接收情况)来控制后台推送的推送频率和延迟时间。
总之, 静默推送是普通推送的一种变种而已。
无论是静默推送还是普通推送,开发者证书里面必须开通 push 相关的功能,并且也需要用户开启允许推送的授权。
这个在 iOS APNs: 远程推送 里面已经介绍过,不在这里赘述。
推送的格式
普通推送的格式,大致是这个样子:
1 | { |
静默推送是不允许带 alert
badge
sound
等字段的,但是必须包含 "content-available":1
.
例如下面的形式都可以:
形式1
1 | { |
形式2
1 | { |
其中 custom 是自己定义的,大家根据需求自行扩展即可。
形式3
1 | { |
这个来自苹果开发者 文档 。
使用场景
具体的使用场景, 需要结合本身的业务和功能特点来说。
静默推送的前提是 APP 没有被杀死,可以通过回调函数来执行相关的代码。
另外静默推送不会打扰用户,比如用户正在游戏中战斗,你频繁的使用普通推送给他,估计他都要疯了.。
我个人使用静默推送的场景大致是这样的,APP 将要挂起的时候, 请求服务器去发一条静默推送,然后使用本地通知的方式唤起用户来打开 APP,从而保证 APP 处于保活的状态,至少静默推送可以增加被后台挂起的时间。
关于本地通知的内容,可以参考之前的文章 iOS APNs: 本地推送.
更多的使用场景等大家在业务中去挖掘。