2016-08-13 10 views
6

私はWatchOS 3ベータ版を使用しており、時計のローカル通知を開始しようとしています。インターフェイスは、以下のコードで "buttonPushed"メソッドを呼び出すボタンの1つです。アプリは正常に動作しますが、通知はありません。アプリケーション構造は、WatchKitアプリケーションのXcode 8のデフォルトです。WatchOS 3のローカル通知

このコードは、私は完全に何かを明らかに足りないWatchKit拡張子

のInterfaceController.swiftファイル内にありますか?

@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 
     } 


    } 

答えて

3

thisによると、毎回要求ごとに一意の新しい識別子を指定する必要があります。

鉱山:

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

また 'ID = UUID.init()聞かせて使用するユニークな識別文字列を作成することができます。uuidString' –

+0

一生に一度それは2つの同じUUIDかもしれません。 – Vladimir

0

ローカル通知watchOS 迅速4.0

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)") 
} 
}) 

一意の要求識別子方法

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

オブジェクティブ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); 
    } 
    }]; 

ユニークな要求識別子法

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

スウィフト4簡単なコード

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) 
関連する問題