这是用户在 2024-6-22 18:11 为 https://vikramios.medium.com/mastering-swift-local-notifications-a-developers-guide-f56b77ab64cc 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?


掌握 Swift 本地通知:开发人员指南


利用 Swift 的本地通知系统释放用户参与的力量

Vikram Kumar

4 min readDec 28, 2023


Swift 中的本地通知提供了一种强大的方式来吸引用户,即使应用程序未运行,也可以通过及时且相关的信息向用户发出警报。无论是提醒用户即将发生的事件、提示他们采取特定操作,还是只是提供重要更新,本地通知都可以增强整体用户体验。在本文中,我们将探讨如何在 Swift 中实现本地通知,并提供编码示例。


照片由 Unsplash 上的 Super Snapper 拍摄


本地通知概述


本地通知是应用程序可以安排在特定时间或响应特定事件传递的警报或消息。即使应用程序位于后台或未运行,它们也会显示在用户的设备上。本地通知可以包括文本、声音和徽章更新。


要在 Swift 中使用本地通知,您需要与 UNUserNotificationCenter 类进行交互,该类是用户通知框架的一部分。以下是有关如何将本地通知集成到 Swift 项目中的分步指南。


第1步:请求用户授权


在安排任何通知之前,请求用户许可至关重要。这可确保您的应用程序具有显示通知的必要权限。在您的 AppDelegate.swift 文件中添加以下代码以请求授权:

import UserNotifications

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if granted {
print("Notification authorization granted")
} else {
print("Notification authorization denied")
}
}
return true
}


此代码片段请求对警报、声音和徽章的授权。如果用户授予权限,您可以继续安排本地通知。


第 2 步:安排本地通知


要安排本地通知,您需要创建 UNNotificationRequest 的实例并将其添加到通知中心。以下是安排简单通知的示例:

func scheduleNotification() {
let content = UNMutableNotificationContent()
content.title = "Reminder"
content.body = "Don't forget to check your tasks!"
content.sound = UNNotificationSound.default

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: false)

let request = UNNotificationRequest(identifier: "reminderNotification", content: content, trigger: trigger)

UNUserNotificationCenter.current().add(request) { error in
if let error = error {
print("Error scheduling notification: \(error.localizedDescription)")
} else {
print("Notification scheduled successfully")
}
}
}


在此示例中,带有标题、正文和默认声音的通知计划在 60 秒后出现。您可以根据应用程序的要求自定义通知内容和触发器。


第 3 步:处理通知操作


您可以通过添加用户无需打开应用程序即可执行的操作来增强通知的交互性。例如,您可能希望直接在通知中提供常见任务的按钮。以下是向通知添加操作的示例:

func scheduleNotificationWithActions() {
let content = UNMutableNotificationContent()
content.title = "Meeting Reminder"
content.body = "Your meeting starts in 10 minutes!"
content.sound = UNNotificationSound.default

let action1 = UNNotificationAction(identifier: "snoozeAction", title: "Snooze", options: [])
let action2 = UNNotificationAction(identifier: "cancelAction", title: "Cancel", options: [.destructive])

let category = UNNotificationCategory(identifier: "meetingCategory", actions: [action1, action2], intentIdentifiers: [], options: [])

UNUserNotificationCenter.current().setNotificationCategories([category])

content.categoryIdentifier = "meetingCategory"

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: false)

let request = UNNotificationRequest(identifier: "meetingNotification", content: content, trigger: trigger)

UNUserNotificationCenter.current().add(request) { error in
if let error = error {
print("Error scheduling notification: \(error.localizedDescription)")
} else {
print("Notification with actions scheduled successfully")
}
}
}


在此示例中,定义了两个操作(“暂停”和“取消”),并创建了一个通知类别以将这些操作与通知相关联。通知内容的 categoryIdentifier 属性设置为将通知与定义的类别链接起来。


第 4 步:处理通知交互


要响应用户与通知的交互,请在 AppDelegate.swift 文件中实现 UNUserNotificationCenterDelegate 方法:

extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
switch response.actionIdentifier {
case "snoozeAction":
// Handle snooze action
break
case "cancelAction":
// Handle cancel action
break
default:
// Handle default action
break
}

completionHandler()
}

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// Handle foreground presentation options
completionHandler([.alert, .sound, .badge])
}
}


当用户与通知交互时,将调用这些委托方法。当用户点击操作按钮时,将调用 didReceive 方法;当应用程序位于前台时收到通知时,将调用 willPresent 方法。


第 5 步:测试通知


要测试本地通知,请在物理设备或模拟器上构建并运行您的应用程序。确保您的应用程序处于后台或关闭状态,以观察通知的行为方式。您应该会看到通知在预定时间出现并包含指定内容。

 结论


本地通知是吸引用户并提供及时信息的宝贵工具。通过遵循本文中概述的步骤并使用提供的代码示例,您可以将本地通知无缝集成到您的 Swift 应用程序中。尝试不同的通知内容、触发器和操作,以创建个性化且有效的用户体验。

 快乐编码!!!

Vikram Kumar

I am Vikram, a Senior iOS Developer at Matellio Inc. focused on writing clean and efficient code. Complex problem-solver with an analytical and driven mindset.

 媒体推荐

 列表

See more recommendations