iOS 12 通知新特性及适配

写在前面

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内分组的设置,请参考后文三、推送管理

12

通知摘要

分组之后,每个分组的通知摘要,系统默认为:“还有**个通知”,如下图:

13

以上红框部分,可支持自定义,自定义摘要可分为两种:

1. 摘要分类

​ 客户端写好分类模板,如下面,“物流通知”、“优惠触达”为客户端规定的模板,之后服务端下发推送,只要指定分类(category字段),就会采用不同的模板。模板定义如下:

  • 优惠模板<N>条优惠触达

  • 物流模板<N>条物流通知

    需要注意的是,分类模板与分组不冲突,无交叉关系。任何一个分组(thread-id指定分组),均可以采用任意一个客户端规定的分类模板(category指定分类)。

    14

2. 更丰富的摘要

​ 分类模板,还可以支持更多的字段。比如下图:

15

上述“格力发布”、“《八十天环游世界》”均为服务端下发的描述字段summary-arg

上面两个模板定义分别是:

  • 优惠模板<N>条优惠触达 by <summary-arg>
  • 物流模板<N>条物流通知 商品:<summary-arg>

摘要描述还支持国际化、指定单条推送摘要参数数、隐藏通知详情时展示的通知摘要,要了解这部分,私我。

通知分组设计准则

  • 将重要的,可交互的通知从消息通知中分离出来

  • 为有意义的,私人的通讯建立分组

  • 尊重用户的优先级和组别

二、交互性Action

在通知中心,或者锁屏时,左滑弹出通知功能按钮后,点击查看,可以看到自定义界面的通知详情,如下图。

iOS 12针对此部分,更新了两部分:

  • 支持点击Action后,更新Action
  • 自定义界面支持点击等交互,比如按钮点击。

Artboard

更新Action

如下图,当我们点击“赞”之后,Action变更为“去商品详情看看”。

17

可交互

下图在自定义界面,点击“收藏”按钮,支持交互。

18

三、推送管理

引入相关概念☞:

显示推送:显示推送,就是正常的推送,支持标记、声音、横幅,在锁定屏幕及通知中心正常显示。

隐式推送:启用隐式推送,之后推送会在通知中心显示,将不会在锁屏显示、不播放声音、不显示横幅,也不会在应用图标上出现标记。

走进管理界面

推送管理,目前支持以下方式:

  1. 【系统支持】锁屏界面:推送左滑,弹出”推送管理”界面(有密码时,需要解锁)
  2. 【系统支持】通知中心:推送左滑,弹出”推送管理”界面
  3. 【系统支持】推送通知按压界面:点击右上角“…”,弹出”推送管理”界面
  4. 【系统支持】设置App——>通知——>iOSNotification——>通知设置页面
  5. 【系统支持】设置App——>iOSNotification(最底部App列表里找到)——>通知设置页面
  6. 【APP支持】 iOSNotification APP内自定义通知设置界面。

1. 锁屏界面

1

2. 通知中心

2

3. 推送通知按压界面

4

4.设置APP——>通知

5

5.设置APP——>iOSNotification

6. APP内支持

7

管理通知操作

1. 便捷管理通知

管理通知界面如下,下面分别阐述对应的操作:

屏幕快照 2018-08-09 上午11.05.09

  • 隐式推送

    启用隐式推送,之后推送会在通知中心显示,将不会在锁屏显示、不播放声音、不显示横幅,也不会在应用图标上出现标记。

    再次打开管理设置如下,也能便捷的打开“显式推送”:

    屏幕快照 2018-08-09 上午11.12.18

  • 关闭

    将会关闭推送,之后无法收到推送。

  • 设置

    跳转进入设置APP内,iOSNotification通知设置的界面。

2. 完整设置

​ 完整的设置页面如下,其中包含之前系统版本的设置,在此不赘述。、

​ 关注两个新的点:通知分组、**”iOSNotification”通知设置**。

8

通知分组

191533728453_.pic

通知分组支持以下三个维度:

  • 自动

    通知按”thread-id”维度来区分,支持多分组。

  • 按应用

    所有通知,按应用维度显示。

  • 关闭通知分组,所有通知来一条显示一条。

“iOSNotification”通知设置

该页面是iOSNotification APP内的设置页面,可完全自定义。

101533728439_.pic

四、临时授权

临时授权特点:

  1. 无须用户授权:即启动时,注册推送功能时,不需要弹出授权框,获取用户授权;
  2. 只支持隐式推送:所有推送,仅支持隐式推送,除非用户开启显示推送;
  3. 临时授权,适合用于试验性质的推送消息。

请求临时授权,推送只能以“隐式推送”。

  • 点击【保持】:可以选择是否显式推送,或者”继续隐式推送
  • 点击【关闭】:关闭所有通知,或者在iOS 系统[设置]APP,打开APP内通知设置页面。

Artboard

五、紧急推送

​ 当我们在开会或者参与一些很重要的活动时,通常会开启勿扰模式或者关闭铃声,但这个操作有可能会让我们错过一些关键的通知。

 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
2
3
4
5
6
7
8
9
10
11
12
{
"aps" : {
"alert" : {
"title" : "客服",
"body" : "请问有什么可以帮您的吗",
"summary-arg" : "格力售后",
},
"sound": "default",
"thread-id" : "jingDongGroup",
"category":"discountCategory",
}
}

​ 关于分组中摘要特殊描述,摘要参数:

summary-arg : 摘要参数

summary-arg-count:摘要参数数

​ 一般来说,需要制定thread-idcategory,其他字段根据需要采纳。

分组payload实例

优惠模板实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"aps" : {
"alert" : {
"title" : "优惠消息",
"body" : "炎炎夏日,格力给您带来🌶",
"summary-arg" : "格力",
"summary-arg-count" : 3
},
"sound": "default",
"mutable-content": 1,
"thread-id" : "discountGroup",
"category":"discountCategory",
},
"isqImgPath": "https://img14.360buyimg.com/n0/jfs/t21631/340/1748546451/140497/7145f001/5b34ada2N60266af7.jpg",
"tImgPath": "https://img20.360buyimg.com/cms/jfs/t26071/155/168066229/224689/13be5238/5b67ef49Nb10a4cd3.jpg",
"title": "格力(GREE) 变频立柜式冷暖空调新上市",
"content": "全自动升降门,第二代变频省电技术,新国货品质升级。专属福利,盛夏来袭!"
}

物流模板实例:

1
2
3
4
5
6
7
8
9
10
11
12
{
"aps" : {
"alert" : {
"title" : "物流消息",
"body" : "您的宝贝已经在路上",
"summary-arg" : "《八十天环游世界》",
},
"sound": "default",
"thread-id" : "logisticsGroup",
"category":"logisticsCategory",
}
}

客服模板实例:

1
2
3
4
5
6
7
8
9
10
11
12
{
"aps" : {
"alert" : {
"title" : "京客服",
"body" : "请问有什么可以帮您的吗",
"summary-arg" : "格力售后",
},
"sound": "default",
"thread-id" : "jingDongGroup",
"category":"discountCategory",
}
}

参考

WWDC 视频,产品、设计、研发均推荐观看。

  1. What’s New in User Notifications

  2. Using Grouped Notifications

  3. Designing Notifications

客户端研发文档

  1. apple notifications
  2. Local and Remote Notification Programming Guide
  3. UserNotifications
  4. Customizing the Appearance of Notifications
  5. Declaring Your Actionable Notification Types
  6. iOS 12.0 API Diffs