[Diving into WWDC 2017] Best Practices and What’s New in User Notifications

用户通知的新特性与最佳实践

  • Notifications overview
  • Hidden content
  • Modifying content
  • Customizing rich notifications
  • User input customization

一 Notification 初步介绍

本地通知(Local Notification)

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

远程通知(Remote Notification)

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

通知触发的条件(Notification Triggers)

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

通知的内容,展现,动作响应,删除等等

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

通知的扩展(Notification Extensions)

  • Service Extension
  • Content Extension

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

二 Hidden Notification Content( iOS 11 新特性)

(What’s new)iOS 11 之新特性

通知内容可以自定义展示与隐藏,主要包括一下几点:

  • Extended support to all apps
  • Global setting
  • Settings per app
  • API to customize notification content

iOS 11 系统,我们可以在手机系统设置里面设置 Push 的展示与隐藏属性

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

隐藏通知内容的实际展示效果

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

Hidden Notification Content Best practices

Session 内这段讲述了使用 API 自定义通知的推荐实践方式。主要有下面几种:

  • User defined setting
  • Retrieve settings using showPreviewsSetting
  • Thread identifiers
  • Pluralization

实践核心代码

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

通知结果展示,预览部分被替换成了 Comment

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

接下来我们可以看看做更多元化的定制

通知条数控制展示

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

实际展示效果如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

更多通知属性的自定义设置

例子核心代码展示如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

实际通知展示样式如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

三 Modifying Push Content

Modifying Push Content 就是修改 Push 内容

修改 Push 内容的使用场景

  • Modifying Push Content Use cases
  • Download media attachments
  • Content encryption**
  • Context specific content—location, time, health data**

实际开发过程中,我们使用 Service Extension 和 Content Extension。

3.1 Service Extension Template 最佳实践

Modifying Push Content Service Extension best practices

主要应用在如下场景

  • Short execution time and memory limit
  • Fallback
  • Notifications will be presented
  • Different from silent notifications

Service Extension的工作原理

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

为了开发 Service Extension 的扩展,你需要通过如下方式选择 template。

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

其核心代码如下。

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

这样你就完成了一个带下载功能的 Service Extension的编写。

3.2 Content Extension Template 最佳实践

Content Extension 主要是为了完成 Customizing Rich Notifications,为我们的 Push 定制便利化。

Customizing Rich Notifications 的主要工作是:

  • Motivation App specific look and feel
  • Custom display of notification content
  • Interactive and dynamic UI

Content Extension工作原理简要介绍如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

为了开发 Content Extension 的扩展,你需要通过如下方式选择 template

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

在下面的例子中,我们需要在 plist 文件中修改添加一些新的设置

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

例子核心代码如下,代码演示了如何定制自定义的 NotificationViewController

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

收到 Push 后展示结果如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

3.3 Customize Rich Notifications Best practices

自定义通知的推荐实践,推荐实践主要基于如下几个方面:

  • Custom UI elements
  • Display all relevant information
  • Reuse app view controllers
  • Correct sizing
  • Fast loading and layout

3.4 User Input Customization Best practices

用户在 Push 处理输入的最佳实践,主要在于以下几个方面:

  • Media buttons
  • Context specific actions
  • To dismiss or not to dismiss
  • Custom user input view gives you full control

对于 3.3 和 3.4 自定义通知和用户输入的推荐实践,Session 给了一个例子。

其核心代码如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

获取Push后展示UI如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

3.5 Action handling

如果我们需要处理一些交互事件,我们需要加上 Action handling。

Action handling的工作原理如图

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

利用一个简单的例子展示如何用代码实践

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

实现的效果如下

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

更进一步的UIResponder

看看如何处理点击实践,这是推荐的例子。

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

实际运行UI展示结果如下。

《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》
《[Diving into WWDC 2017] Best Practices and What’s New in User Notifications》

四 总结

Session 708 主要讲述 iOS 11 Push 的新特性以及使用 Push Notifications 的推荐实践,我们可以了解 iOS 11 Push 有关的最新特性;并通过例子了解如何简单方便的实践 Service Extension 和 Content Extension;并对如何定制 Push VC 的 UI 交互方式有比较清晰的理解。

五 参考文献与链接

  1. https://developer.apple.com/videos/play/wwdc2017/708/
  2. https://medium.com/compileswift/whats-new-in-ios-11-notifications-446f22a4c279
  3. https://hackernoon.com/the-must-follow-best-practices-for-your-push-notifications-5f878565d2a9
    原文作者:字节跳动技术博客
    原文地址: https://techblog.toutiao.com/2017/07/05/session708/
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞