译自 www.hackingwithswift.com/books/ios-s…
更多内容,欢迎关注公众号 「Swift花园」
喜欢文章?不如来个 🔺💛➕三连?关注专栏,关注我 🚀🚀🚀
iOS 有一个叫 UserNotifications 的框架,它的功能跟你想的一样:让我们创建可以显示在锁定的屏幕上的通知。 通知有两种,基于创建的位置而不同:本地通知是我们本地安排的,远程通知(通常又称为推送通知)是从某个地方的服务器发送的。
远程通知需要用到一个服务器,因为你需要把消息发给 Apple 的推送通知服务(APNS),由它转发给用户。但本地通知相对来说要简单的多,因为只要用户允许,我们可以任何时候发送消息。
为了尝试本地通知,我们需要导入 UserNotifications
:
import UserNotifications 复制代码
接下来我们要添加一些基本结构,然后填充本地通知的代码。使用本地通知需要向用户询问权限,然后才能注册我们想展示的通知。我们将这些动作放进独立的按钮,代码如下:
VStack { Button("Request Permission") { // first } Button("Schedule Notification") { // second } } 复制代码
好了,基本结构就完成了。接下来我们聚焦第一步:请求授权。通知的形式很多样,最常见的动作时请求展示 alert,badge 和 声音的权限 —— 这并不意味着我们要同时使用所有这些形式,但是通过事先请求权限,我们可以稍后选择。
当我们告诉 iOS 我们想要的通知类型之后,它会提示用户我们的应用要使用通知做些什么。当用户做出选择,我们会得到一个闭包调用,并被告知请求成功与否。
把第一个 // first
注释替换成下面的代码:
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in if success { print("All set!") } else if let error = error { print(error.localizedDescription) } } 复制代码
一旦用户授予权限,我们就可以开始安排通知了。尽管通知看起来很简单,Apple 还是把它们分成了三部分,以便获得最大的灵活性:
UUID().uuidString
来获取一个随机的标识符。当你在学习通知的时候,最简单的触发器类型是 UNTimeIntervalNotificationTrigger
,它可以让我们请求从现在开始若干秒数之后显示的通知。把 // second
注释替换为下面的代码:
let content = UNMutableNotificationContent() content.title = "Feed the cat" content.subtitle = "It looks hungry" content.sound = UNNotificationSound.default // show this notification five seconds from now let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) // choose a random identifier let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger) // add our notification request UNUserNotificationCenter.current().add(request) 复制代码
运行应用,点击第一个按钮请求通知权限,然后点击第二个按钮添加一个实际的通知。
接下来是重要的部分:一旦通知被添加: 在模拟器里点击 Cmd+L 锁屏。几秒后,设备会随着一个声音唤醒,并显示我们的消息 —— 漂亮!
我的公众号 这里有Swift及计算机编程的相关文章,以及优秀国外文章翻译,欢迎关注~