【问题标题】:Background Notifications on WatchOS 3 (XCode 8b6)WatchOS 3 (XCode 8b6) 上的后台通知
【发布时间】:2016-08-18 19:55:34
【问题描述】:

我在手表上使用前台通知:

class WorkoutInterfaceController:   WKInterfaceController,
                                    UNUserNotificationCenterDelegate

设置委托:

UNUserNotificationCenter.current().delegate = self

接收前台通知:

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Swift.Void)
{
    print("Received Notification .....")
    UNUserNotificationCenter.current().removeAllDeliveredNotifications()
    let completionSound: UNNotificationPresentationOptions = [.sound, .alert]
    completionHandler(completionSound)
}

添加通知:

    let content: UNMutableNotificationContent = UNMutableNotificationContent()

    content.title = "TITLE"
    content.subtitle = "sub title"
    content.body = "message body"
    content.sound = UNNotificationSound.default()

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: duration, repeats: false)

    let request = UNNotificationRequest(identifier: restOverIdentifier,
                                        content: content,
                                        trigger: trigger)

    UNUserNotificationCenter.current().add(request)
    {
        (error) in // ...
    }

我在 sim 卡和设备上都试过了,但在 sim 卡被锁定或在主屏幕上或手表上,如果您不移动手臂,屏幕变黑时却没有收到通知。

我正在寻找的只是一个简单的哔声,我什至不需要通知警报屏幕。

如果您有对此有用的东西,请发布代码或确认此功能在手表上不起作用。

谢谢

格雷格

【问题讨论】:

    标签: ios swift notifications watchkit watchos


    【解决方案1】:

    watchOS 3 存在一个错误,即只显示第一个通知:

    暂时将我的代码更改为:

        let id: String = WatchNotify.getUUID()
    
        //        let request = UNNotificationRequest(identifier: focusWarningIdentifier,
        let request = UNNotificationRequest.init(identifier: id,
                                            content: content,
                                            trigger: trigger)
    
        UNUserNotificationCenter.current().add(request)
    

    为 UUID 添加此功能:

    class func getUUID() -> String
    {
        let uuidObj = CFUUIDCreate(nil)
        let uuidString = CFUUIDCreateString(nil, uuidObj)!
        return uuidString as String
    }
    

    虽然委托完成处理程序似乎还没有在手表上工作,但似乎可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多