Local notification in WatchOS 3

I am using the beta version of WatchOS 3 and trying to trigger a local notification on the watch. An interface is just one button that calls the "buttonPushed" method in the code below. The application works fine, but I never get a notification. The default app structure from Xcode 8 for the WatchKit app.

This code is located in the InterfaceController.swift file of the WatchKit extension

Am I missing something completely obvious?

@IBAction func buttonPushed() { sendMyNotification() } func sendMyNotification(){ if #available(watchOSApplicationExtension 3.0, *) { let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in // Enable or disable features based on authorization. } let content = UNMutableNotificationContent() content.title = NSString.localizedUserNotificationString(forKey: "Hello!", arguments: nil) content.body = NSString.localizedUserNotificationString(forKey: "Hello_message_body", arguments: nil) content.sound = UNNotificationSound.default() content.categoryIdentifier = "REMINDER_CATEGORY" // Deliver the notification in five seconds. let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false) let request = UNNotificationRequest.init(identifier: "FiveSecond", content: content, trigger: trigger) // Schedule the notification. center.add(request ,withCompletionHandler: nil) } else { // Fallback on earlier versions } } 
+6
source share
3 answers

According to this . You must provide a unique and new identifier for the request each time.

Mine:

 let id = String(Date().timeIntervalSinceReferenceDate) let request = UNNotificationRequest(identifier: id, content: content, trigger: trigger) 
+3
source

Fast 4 simple code

  let content = UNMutableNotificationContent() content.title = "How many days are there in one year" content.subtitle = "Do you know?" content.body = "Do you really know?" content.badge = 1 let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) let request = UNNotificationRequest(identifier: "timerDone", content: content, trigger: trigger) UNUserNotificationCenter.current().add(request, withCompletionHandler: nil) 
+1
source

WatchOS swift 4.0 local notification

 var content = UNMutableNotificationContent() content.title = "ALERT !" content.body = msg content.sound = UNNotificationSound.default() as? UNNotificationSound // Time var trigger: UNTimeIntervalNotificationTrigger? trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) // Actions var snoozeAction = UNNotificationAction(identifier: "Track", title: "Track", options: .foreground) var category = UNNotificationCategory(identifier: "UYLReminderCategory", actions: [snoozeAction], intentIdentifiers: [] as? [String] ?? [String](), options: .customDismissAction) var categories = Set<AnyHashable>([category]) center.setNotificationCategories(categories as? Set<UNNotificationCategory> ?? Set<UNNotificationCategory>()) content.categoryIdentifier = "UYLReminderCategory" var identifier: String = stringUUID() var request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger) center.add(request, withCompletionHandler: {(_ error: Error?) -> Void in if error != nil { print("Something went wrong: \(error)") } }) 

Unique Request ID Methods

 func stringUUID() -> String { let uuid = UUID() let str: String = uuid.uuidString return str } 

Goal c

  // Objective-C UNMutableNotificationContent *content = [UNMutableNotificationContent new]; content.title = @"ALERT !"; content.body = msg; content.sound = [UNNotificationSound defaultSound]; // Time UNTimeIntervalNotificationTrigger *trigger; trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1 repeats:NO]; // Actions UNNotificationAction *snoozeAction = [UNNotificationAction actionWithIdentifier:@"Track" title:@"Track" options:UNNotificationActionOptionForeground]; // Objective-C UNNotificationCategory *category = [UNNotificationCategory categoryWithIdentifier:@"UYLReminderCategory" actions:@[snoozeAction] intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction]; NSSet *categories = [NSSet setWithObject:category]; // Objective-C [center setNotificationCategories:categories]; // Objective-C content.categoryIdentifier = @"UYLReminderCategory"; NSString *identifier = [self stringUUID]; UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger]; [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Something went wrong: %@",error); } }]; 

Unique Request ID Methods

 -(NSString *)stringUUID { NSUUID *uuid = [NSUUID UUID]; NSString *str = [uuid UUIDString]; return str; } 
0
source

All Articles