微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UNUserNotificationCenter 警报仅在前台解锁/应用程序时触发

如何解决UNUserNotificationCenter 警报仅在前台解锁/应用程序时触发

我正在开发一个 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)

解决方法

发现问题:我有一个函数应该在计时器停止时删除通知,并且设置错误,因此它在计时器运行时删除了通知。我还最终设置了一个硬编码的通知 ID,该 ID 有效,因为不应该同时有 2 个警报。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。