0

Я разрабатываю приложение WatchOS3, в котором пользователь получает локальные уведомления с настраиваемыми действиями. У пользователя есть 2 пользовательских действия, которые он может вызывать для уведомления, вариант 1 и вариант 2. После того, как пользователь нажмет одну из опций, приложение должно запустить в определенное представление.Как открыть определенный контроллер просмотра из пользовательского действия уведомления в WatchOS 3

До сих пор действия уведомления правильно обработаны с помощью этой функции в ExtenionsDelegate:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 
    print("Tapped in notification") 
    let identifier = response.actionIdentifier 
    print(identifier) 

    switch(identifier){ 
    case "option1": 
     print("tapped option1") 
    case "option2": 
     print("tapped option2") 
    default: break 
    } 
    completionHandler() 
} 

А вот код из моего основного InterfaceController, в котором определены уведомления категории:

func actioncategories() { 

    let option1 = UNNotificationAction(identifier: "option1", title: "Test Option 1", options: .foreground) //Button 1 
    let option2 = UNNotificationAction(identifier: "option2", title: "Test Option 2", options: .foreground) //Button 2 

    let actioncategory = UNNotificationCategory(identifier: "action_category", actions: [option1, option2], intentIdentifiers: []) 

    UNUserNotificationCenter.current().setNotificationCategories([actioncategory]) //setting actions & categories 
} 

Теперь, как я могу сообщить моему приложению, чтобы он запускался в конкретное представление при выборе опции 1 или option2?

ответ

0

Я нашел решение:

  • Вместо использования Func userNotificationCenter в ExtensionsDelegate, использовать Func handleAction (идентификатор withIdentifier: Строка ?, для уведомления: UNNotification) в главном контроллере интерфейса

  • с presentController (withName:, context:) вы можете открыть определенное изображение

Код (в InterfaceController):

override func handleAction(withIdentifier identifier: String?, for notification: UNNotification) { 
    print("Tapped in notification") 
    print(identifier) 

    switch(identifier){ 
    case "option1"?: 
     print("tapped option1") 
     presentController(withName: "Option1_Screen", context: "segue") 
    case "option2"?: 
     print("tapped option2") 
     presentController(withName: "Option2_Screen", context: "segue") 
    default: break 
    } 
} 
Смежные вопросы