写在前面
iOS 12 通知推送迎来部分功能更新,主要有:
- Grouped notifications 推送分组
- Notification content extensions 推送内容扩展中的可交互和动态更改Action
- Notification management 推送消息的管理
- Provisional authorization 临时授权
- Critical alerts 紧急推送
本文针对以上特性进行一个简单描述,仅供参考,若需要了解更详细的内容,请跳转至本文末尾参考一节。
需要大家重点关注的是:
分组功能
:分组能让用户对通知的阅读更轻松。
通知管理
:无处不在的通知管理入口,用户可以轻而易举的打开或者关闭推送,或进行设置。
本文中的demo是iOSNotification。
一、推送分组
iOS 12 推送相关功能,最重要,最突出的特性就是支持分组。
分组维度
自动
按
thread-id
分组,thread-id
为服务端下发字段,每个分组可指定通知摘要。顶层通知会伴随通知摘要(下发
summary-arg
指定),多分类的通知摘要将会叠加。按应用分组
所有通知将会以应用为维度分组,即APP所有通知在同一组,每个组的顶层是该组收到的最新通知。
顶层通知会伴随通知摘要(下发
summary-arg
指定),多分类的通知摘要将会叠加。关闭
不进行分组,所有消息以单条消息维度进行展示。
针对APP内分组的设置,请参考后文三、推送管理。
通知摘要
分组之后,每个分组的通知摘要,系统默认为:“还有**个通知”,如下图:
以上红框部分,可支持自定义,自定义摘要可分为两种:
1. 摘要分类
客户端写好分类模板,如下面,“物流通知”、“优惠触达”为客户端规定的模板,之后服务端下发推送,只要指定分类(category
字段),就会采用不同的模板。模板定义如下:
优惠模板:
<N>条优惠触达
物流模板:
<N>条物流通知
需要注意的是,分类模板与分组不冲突,无交叉关系。任何一个分组(
thread-id
指定分组),均可以采用任意一个客户端规定的分类模板(category
指定分类)。
2. 更丰富的摘要
分类模板,还可以支持更多的字段。比如下图:
上述“格力发布”、“《八十天环游世界》”均为服务端下发的描述字段summary-arg
。
上面两个模板定义分别是:
- 优惠模板:
<N>条优惠触达 by <summary-arg>
- 物流模板:
<N>条物流通知 商品:<summary-arg>
摘要描述还支持国际化、指定单条推送摘要参数数、隐藏通知详情时展示的通知摘要,要了解这部分,私我。
通知分组设计准则
将重要的,可交互的通知从消息通知中分离出来
为有意义的,私人的通讯建立分组
尊重用户的优先级和组别
二、交互性Action
在通知中心,或者锁屏时,左滑弹出通知功能按钮后,点击查看
,可以看到自定义界面的通知详情,如下图。
iOS 12针对此部分,更新了两部分:
- 支持点击Action后,更新Action
- 自定义界面支持
点击
等交互,比如按钮点击。
更新Action
如下图,当我们点击“赞”之后,Action变更为“去商品详情看看”。
可交互
下图在自定义界面,点击“收藏”按钮,支持交互。
三、推送管理
引入相关概念☞:
显示推送:显示推送,就是正常的推送,支持标记、声音、横幅,在锁定屏幕及通知中心正常显示。
隐式推送:启用隐式推送,之后推送会在通知中心显示,将不会在锁屏显示、不播放声音、不显示横幅,也不会在应用图标上出现标记。
走进管理界面
推送管理,目前支持以下方式:
- 【系统支持】锁屏界面:推送左滑,弹出”推送管理”界面(有密码时,需要解锁)
- 【系统支持】通知中心:推送左滑,弹出”推送管理”界面
- 【系统支持】推送通知按压界面:点击右上角“…”,弹出”推送管理”界面
- 【系统支持】设置App——>通知——>iOSNotification——>通知设置页面
- 【系统支持】设置App——>iOSNotification(最底部App列表里找到)——>通知设置页面
- 【APP支持】 iOSNotification APP内自定义通知设置界面。
1. 锁屏界面
2. 通知中心
3. 推送通知按压界面
4.设置APP——>通知
5.设置APP——>iOSNotification
6. APP内支持
管理通知操作
1. 便捷管理通知
管理通知界面如下,下面分别阐述对应的操作:
隐式推送
启用隐式推送,之后推送会在通知中心显示,将不会在锁屏显示、不播放声音、不显示横幅,也不会在应用图标上出现标记。
再次打开管理设置如下,也能便捷的打开“显式推送”:
关闭
将会关闭推送,之后无法收到推送。
设置
跳转进入设置APP内,iOSNotification通知设置的界面。
2. 完整设置
完整的设置页面如下,其中包含之前系统版本的设置,在此不赘述。、
关注两个新的点:通知分组、**”iOSNotification”通知设置**。
通知分组
通知分组支持以下三个维度:
自动
通知按”thread-id”维度来区分,支持多分组。
按应用
所有通知,按应用维度显示。
关
关闭通知分组,所有通知来一条显示一条。
“iOSNotification”通知设置
该页面是iOSNotification APP内的设置页面,可完全自定义。
四、临时授权
临时授权特点:
- 无须用户授权:即启动时,注册
推送
功能时,不需要弹出授权框,获取用户授权; - 只支持
隐式推送
:所有推送,仅支持隐式推送,除非用户开启显示推送
; - 临时授权,适合用于试验性质的推送消息。
请求临时授权,推送只能以“隐式推送”。
- 点击【保持】:可以选择是否
显式推送
,或者”继续隐式推送
“ - 点击【关闭】:关闭所有通知,或者在iOS 系统[设置]APP,打开APP内通知设置页面。
五、紧急推送
当我们在开会或者参与一些很重要的活动时,通常会开启勿扰模式或者关闭铃声,但这个操作有可能会让我们错过一些关键的通知。
iOS 12 中加入的重要提醒能够无视勿扰模式和铃声开关的限制,收到这类通知时会伴随一个系统或 App 设定的提示音。需要推送重要提醒的应用需要前往 [developer.apple.com/contact/req…](https://link.juejin.im?target=https%3A%2F%2Fdeveloper.apple.com%2Fcontact%2Frequest%2Fnotifications-critical-alerts-entitlement%2F) 获得授权。
注意:所谓的重要提醒是指那些需要用户即刻做出反应的通知,例如与医疗和健康相关的通知,与家庭安全相关的通知,与公共安全相关的通知等。
通知设置页面重要提醒的开关区别于普通的通知开关。
新特性的开发
产品设计侧
- 分组功能:需要制定一系列模板,包含模板摘要的详细规则。
- 可交互性Action:需要产品制定好对应的界面模板,设计侧给出设计稿才能开发。
- APP内自定义管理通知界面:同正常研发需求,涉及产品提需、设计供稿、客户端和服务端的研发工作。
技术适配
技术适配工作,分为客户端及服务端。
客户端
客户端适配工作较多,每个新特性都有相应的功能开发,涉及到服务端协议字段的,还需要进行协商。
这部分,由消息中心客户端支持,不作赘述。
服务端
服务端最主要工作在于支持分组。
分组
假如要支持分组,需要制定thread-id
协议字段,同时如果要制定分组所采用的通知摘要的模板,需要制指定category
,如下:
1 | { |
关于分组中摘要特殊描述,摘要参数:
summary-arg
: 摘要参数
summary-arg-count
:摘要参数数
一般来说,需要制定thread-id
、category
,其他字段根据需要采纳。
分组payload实例
优惠模板实例
1 | { |
物流模板实例:
1 | { |
客服模板实例:
1 | { |
参考
WWDC 视频,产品、设计、研发均推荐观看。
客户端研发文档