2017-06-20 16 views
0

Appleウォッチシミュレータのローカル通知をボタンで表示しようとしています。これはコードです:Xcode Apple Watchプロジェクト、ローカル通知が表示されていませんか?

@IBAction func buttonOne() { 

    print("button one pressed") 

    let content = UNMutableNotificationContent() 
    content.title = NSString.localizedUserNotificationString(forKey: "Notified!", arguments: nil) 
    content.body = NSString.localizedUserNotificationString(forKey: "This is a notification appearing!", arguments: nil) 

    // Deliver the notification in five seconds. 
    content.sound = UNNotificationSound.default() 
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, 
                repeats: false) 
    // Schedule the notification. 
    let request = UNNotificationRequest(identifier: "Notify", content: content, trigger: trigger) 

    center.add(request) { (error : Error?) in 
     if let theError = error { 
      print(theError.localizedDescription) 
     } else { 
      print("successful notification") 
     } 
    } 

} 

コンソールは正常に「成功通知」を印刷していますが、通知は時計シミュレータに表示されません。これがなぜなのかわかりません

答えて

0

1)通知をスケジュールする前に、権限を要求してください。例えば、requestAuthorizationメソッドを使用します:アプリケーションがフォアグラウンドで実行されている場合

let center = UNUserNotificationCenter.current() 
center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in 
    // Enable or disable features based on authorization 
} 

2)通知は時計の顔には表示されません。これを考慮して、cmd + Hを使用してアプリを非表示にすることができます。

+0

2)フォアグラウンドで通知処理を実装することもできます。この値を 'content.setValue(true、forKey:" shouldAlwaysAlertWhileAppIsForeground ")'によって通知コンテンツに追加するだけで、クラスを 'UNUserNotificationCenterDelegate'に準拠させ、' func userNotificationCenter(_ center:UNUserNotificationCenter、 (UNNotificationPresentationOptions) - >無効){ completionHandler([.alert、.badge]) } ' –

関連する問題