2016-08-13 19 views
6

Tôi đang sử dụng bản beta WatchOS 3 và cố gắng khởi tạo thông báo cục bộ trên đồng hồ. Giao diện chỉ là một nút gọi phương thức "buttonPushed" trong mã bên dưới. Ứng dụng chạy tốt nhưng tôi không bao giờ nhận được thông báo. Cấu trúc ứng dụng là mặc định từ Xcode 8 cho ứng dụng WatchKit.Thông báo địa phương trong WatchOS 3

Mã này nằm trong tệp InterfaceController.swift của tiện ích WatchKit

Tôi có thiếu thứ gì đó hoàn toàn hiển nhiên không?

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


    } 

Trả lời

3

Theo this. Bạn nên chỉ định một số nhận dạng duy nhất và mới để yêu cầu mỗi lần.

Mine:

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

Bạn cũng có thể tạo ra một chuỗi được xác định độc đáo sử dụng 'hãy id = UUID.init(). UuidString' –

+0

Một lần trong đời nó có thể là hai UUID tương tự. – Vladimir

0

watchos Thông báo địa phương nhanh chóng 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)") 
} 
}) 

phương pháp yêu cầu nhận dạng độc đáo

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

Objective 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); 
    } 
    }]; 

phương pháp yêu cầu nhận dạng độc đáo

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

Swift 4 mã đơn giản

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) 
Các vấn đề liên quan