UNUserNotificationCenter 警报仅在前台解锁/应用程序时触发
Posted
技术标签:
【中文标题】UNUserNotificationCenter 警报仅在前台解锁/应用程序时触发【英文标题】:UNUserNotificationCenter alerts only firing when unlocked/app in foreground 【发布时间】:2021-02-18 06:01:12 【问题描述】:我正在开发一个包含计时器的 ios/Apple Watch 应用。设置计时器后,它会在计时器完成时设置本地警报以触发。当应用程序打开并在前台运行时效果很好,但在锁定屏幕或切换应用程序时不会发出警报。
iOS 和 Watch 的行为相同
该应用程序正在请求.alert
、.sound
和.badge
权限,并且所有权限均已授予。
我试过在x
秒内与在指定时间开火,同样的行为
我看到有人说它需要运行超过 60 秒,但这并没有改变结果。
相关代码:
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) success, error in
if success
print("Notification Permission Set")
else if let error = error
print(error.localizedDescription)
let content = UNMutableNotificationContent()
content.title = "LE Timer"
content.subtitle = "Timer Complete"
content.sound = UNNotificationSound.default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: runFor, repeats: false)
notificationId = UUID().uuidString
let request = UNNotificationRequest(identifier: notificationId, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
【问题讨论】:
【参考方案1】:发现问题:我有一个函数应该在计时器停止时删除通知,但它设置错误,所以它在计时器运行时删除了通知。我最后还设置了一个硬编码的通知 ID,因为不应该同时有 2 个警报。
【讨论】:
以上是关于UNUserNotificationCenter 警报仅在前台解锁/应用程序时触发的主要内容,如果未能解决你的问题,请参考以下文章
UNUserNotificationCenter.current().getDeliveredNotifications 只返回一个空数组
我如何知道 UNUserNotificationCenter 的 removeAllPendingNotificationRequests() 何时完成?
UNUserNotificationCenter 需要将Present code
使用 UNUserNotificationCenter 后没有调用 didReceiveLocalNotification