我几天都在苦苦挣扎,我迫切需要一些帮助。我正在使用Swift 4和WatchOS 4.我创建了一个简单的计时器应用程序,一旦计时器启动,我发送一个本地通知,提醒我时间已到。我也在应用程序中启动了workoutSession,因为这是让通知工作的唯一方法。所以在应用程序上我启动计时器,从5分钟开始倒计时。我放下手腕让屏幕睡不着觉。 (我不是在手腕抬起时使用清醒)。当计时器启动时,我收到触觉通知,但屏幕保持空白。如果我然后点击屏幕,则会显示通知。
为什么不在屏幕上显示通知而不必在听到/感觉到警报后点击手表?
计时器启动代码:
intervalTimer = Timer.scheduledTimer(timeInterval: 300, target: self, selector: #selector (self.timerDidEnd), userInfo: nil, repeats: false)
WKInterfaceDevice.current().play(.start)
计时器已结束带有通知请求的功能:
@objc func timerDidEnd() {
if self.intervalTimer.isValid{self.intervalTimer.invalidate()}
let content = UNMutableNotificationContent()
content.title = "Timer Up!"
content.body = "Do Something"
content.sound = UNNotificationSound.default() // This is optional
content.setValue("YES", forKeyPath: "shouldAlwaysAlertWhileAppIsForeground")
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 2, repeats: false)
content.categoryIdentifier = "myCategory"
let request = UNNotificationRequest(identifier: NSUUID().uuidString,
content: content,
trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request) { (error) in
if error != nil {
print(error!)
} else {
print("notification: ok")
}
}
}
在分机代表中:
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .sound])
}
答案 0 :(得分:0)
事实证明。如果不使用“手腕上的唤醒屏幕”,则必须在屏幕上显示通知之前点击屏幕。您仍然可以通过触觉反馈和声音警报获得警报。
当启用“手腕上的唤醒屏幕”时,通知会出现在屏幕上,因为您已经通过抬起手腕唤醒了屏幕。