我在 iOS 10.2 中遇到了一个带有UNTimeIntervalNotificationTrigger
和UNUserNotificationCenterDelegate
. 基本上,我创建的通知会立即被代表接收,然后在正确的内部再次接收。这仅在触发器上的 repeats 属性设置为 true 时发生。
有没有其他人看到这个问题?现在我想我需要检查委托中的触发日期并与存储的注册日期进行比较——但如果可能的话,我想避免这种情况。
创建通知的示例代码
let content = UNMutableNotificationContent()
content.body = "My notification message"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)
let request = UNNotificationRequest(identifier: "MY_IDENTIFIER", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
UNUserNotificationCenterDelegate 在 .add 之后直接触发
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// Code called here instantly when trigger repeats = true
// Code called again at proper interval as well (60 seconds)
}
如果我将触发器更改为重复错误,则不会发生这种情况
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: false)