swift - 如何在 Swift 上发出多个本地通知?
问题描述
底线是我在 10 秒的时间间隔内发出了一个本地通知。如何以不同的时间延迟向此代码添加多个通知?也就是说,具有不同延迟(几个小时、几天等)的不同通知。如果可能,请使用我的代码示例。有人告诉我,我需要输入一个不同的标识符:“内容”和不同的时间。但我不明白我需要复制代码的哪些部分。
import UIkit
import UserNotifications
class ViewController UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Hi"
content.body = "Bear"
content.sound = UNNotificationSound.default
content.threadIdentifier = "local-notifications"
let date = Date(timeIntervalSinceNow: 10)
let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let request = UNNotificationRequest(identifier: "content", content: content, trigger: trigger)
center.add(request) {(error) in
if error != nil {
print (error)
}
}
}
```
解决方案
scheduleNotification(identifier:content:date:)
您可以在中创建方法UNUserNotificationCenter
extension
,
extension UNUserNotificationCenter {
func scheduleNotification(identifier: String, content: UNMutableNotificationContent, date: Date) {
let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
self.add(request) {(error) in
if error != nil {
print (error)
}
}
}
}
现在,为多个通知调用此方法,并使用您要使用的适当参数,即
示例 1:
let content1 = UNMutableNotificationContent()
content1.title = "Hi"
UNUserNotificationCenter.current().scheduleNotification(identifier: "content1", content: content1, date: Date(timeIntervalSinceNow: 10))
示例 2:
let content2 = UNMutableNotificationContent()
content2.title = "Hello"
UNUserNotificationCenter.current().scheduleNotification(identifier: "content2", content: content2, date: Date(timeIntervalSinceNow: 20))
推荐阅读
- reactjs - React 函数可以改成类组件吗
- python - 无法让 Django {% regroup %} 工作
- javascript - React - 位置 5 的 JSON 中的意外标记 u
- python - 如何删除与 pandas 合并的 excel 单元格以进行进一步处理?
- python - 我正在尝试做一个 def 语句,但无论我尝试什么都无法让它工作
- javascript - 在 NodeJS 中下载 Dropbox 文件的内容
- python - 重复列表中的某个字符?(Python)
- javascript - 在 javascript 或 jquery 中通过单击和按键触发按钮
- arrays - ZSH 将值视为文字字符串
- vba - 使用 Textrange.replace 时不区分大小写