2016-08-18 4 views
0

Я на переднем плане уведомления о часах работы с:Фоновые Уведомления о WatchOS 3 (XCode 8b6)

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 // ... 
    } 

Я пробовал как симулятор, так и устройство без ведома получать уведомление, когда сим заблокирован или на главном экране или на часах, когда экран становится черным, если вы не двигаете рукой.

Все, что я ищу, это простой звуковой сигнал. Мне даже не нужен экран оповещений.

Пожалуйста, отправьте код, если у вас есть что-то для этого или подтвердите, что эта функция не работает на часах.

Благодаря

Грег

ответ

2

Существует ошибка с 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 
} 

Кажется, сделать трюк, хотя обработчик завершения делегата, похоже, пока не работает на часах.

Смежные вопросы