手腕掉落后,UserNotification不会出现在手表上

时间:2018-02-18 05:15:52

标签: ios swift watchkit watch-os

我几天都在苦苦挣扎,我迫切需要一些帮助。我正在使用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])
}

1 个答案:

答案 0 :(得分:0)

事实证明。如果不使用“手腕上的唤醒屏幕”,则必须在屏幕上显示通知之前点击屏幕。您仍然可以通过触觉反馈和声音警报获得警报。

当启用“手腕上的唤醒屏幕”时,通知会出现在屏幕上,因为您已经通过抬起手腕唤醒了屏幕。