userInfo, нажав на уведомление, когда приложение закрыто

Я делаю приложение, которое планирует локальные уведомления и сохраняет userInfo. Отчасти это нормально.

Но когда приложение закрыто, если появляется уведомление и пользователь щелкает, метод не вызывается, и я не могу обработать userInfo.

Я увидел, что есть новый способ получать уведомления с помощью UNUserNotificationCenter. Но тоже не работает.

Я пробовал так, но у меня не получилось:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

    let userInfo = response.notification.request.content.userInfo
    if let yourData = userInfo["yourKey"] as? String {
        // Handle your data here, pass it to a view controller etc.
    }
}

Это моя реализация в AppDelegate:

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

    let lNotification = UILocalNotification()
    lNotification.userInfo = response.notification.request.content.userInfo
        // Handle your data here, pass it to a view controller etc.

}

Кто-нибудь, чтобы помочь мне? Я видел все вопросы, связанные здесь, и ничего не нашел.


person Roberto Pinheiro    schedule 27.03.2018    source источник
comment
Почему вы создаете новый экземпляр UILocalNotification() в методе didReceive? Что такое applicationWorker? Не могли бы вы показать код приложения Worker и его метода manage()?   -  person Anton Novoselov    schedule 27.03.2018
comment
@AntonNovoselov Спасибо за ответ, однако суть не в этой реализации метода. Проблема в том, что при запуске приложения по уведомлению эта функция не вызывалась.   -  person Roberto Pinheiro    schedule 27.03.2018
comment
@AntonNovoselov Дело в том, как мне вызвать функцию, когда я открываю приложение, щелкнув уведомление. Я ценю вашу помощь!   -  person Roberto Pinheiro    schedule 27.03.2018
comment
проверьте мой ответ - проверьте, зарегистрированы ли вы для получения уведомлений   -  person Anton Novoselov    schedule 27.03.2018


Ответы (1)


Вы подписались на уведомления? Если нет, добавьте это в AppDelegate didFinishLaunchingWithOptions:

// Register Notifications
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge], completionHandler: { granted, error in

            if granted {
                print("User notifications are allowed")
            } else {
                print("User notifications are NOT allowed")
            }
        })
        UNUserNotificationCenter.current().delegate = self
person Anton Novoselov    schedule 27.03.2018