介绍
借助iOS 10,tvOS 10和watchOS 3,Apple引入了一个称为UserNotifications框架的新框架。 这套全新的API提供了一种统一的,面向对象的方式,可以在这些平台上使用本地和远程通知。 与现有的API相比,此功能特别有用,因为现在与本地和远程通知的处理非常相似,并且不再仅通过词典来访问通知内容。
在本教程中,我将介绍这个新框架的基础知识,并展示如何轻松利用它来支持应用程序的通知。
本教程要求您使用最新的iOS,tvOS和watchOS SDK运行Xcode 8。
1.注册通知
任何支持通知的应用程序的第一步都是向用户请求权限。 与以前的iOS版本一样,在使用UserNotifications框架时,通常的做法是在应用程序启动完成后立即执行此操作。
在使用任何UserNotifications API之前,您需要将以下import语句添加到访问框架的任何Swift代码文件中:
import UserNotifications
接下来,为了注册您的应用程序以接收通知,您需要将以下代码添加到AppDelegate
的application(_:didFinishLaunchingWithOptions:)
方法中:
let center = UNUserNotificationCenter.current()
let options: UNAuthorizationOptions = [.alert, .badge, .sound]
center.requestAuthorization(options: options) { (granted, error) in
if granted {
application.registerForRemoteNotifications()
}
}
最初使用此代码,我们获得对当前UNUserNotificationCenter
对象的引用。 接下来,我们使用希望应用程序具有的通知功能来配置UNAuthorizationOptions
。 请注意,您可以在此处使用任意选项组合,例如, alert
或badge
和sound
。
然后使用这两个对象,通过在我们的UNUserNotificationCenter
实例上调用requestAuthorization(options:completionHandler:)
方法来为我们的应用请求显示通知的授权。 代码的完成处理程序块向其中传递了两个参数:
- 一个
Bool
值,表示用户是否授予了授权。 - 一个可选的
Error
对象,如果系统由于某种原因而无法为您的应用请求通知授权,它将包含信息。
请注意,注册远程通知将调用与以前的iOS版本相同的UIApplication
回调方法。 成功时, application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
将被调用,并application(_:didFailToRegisterForRemoteNotificationsWithError:)
将失败被调用。
2.安排通知
在本教程的这一部分中,我们将完全专注于使用UserNotifications框架安排本地通知。 由于引入了新框架,因此远程推送通知的发送未更改。
在计划之前,本地通知由UNNotificationRequest
类的实例表示。 此类型的对象由以下组件组成:
- 标识符:唯一的
String
,可让您将各个通知彼此区分开。 - 内容:
UNNotificationContent
对象,其中包含显示通知所需的所有信息,包括标题,副标题和应用徽章编号。 - 触发器:
UNNotificationTrigger
对象,系统使用它来确定何时将通知“发送”到您的应用。
首先,我们将研究可以为本地通知设置的各种类型的触发器。 UNNo