Почему мой UserNotificationCenter не получал при запуске - PullRequest
0 голосов
/ 05 марта 2019

Я использую UserNotifications сделать простое уведомление для теста, я написал код в AppDelegate, как показано ниже, когда уведомление запускается в фоновом режиме, оно отображает сообщение на экране, но не запускает код и печати (...) и a.get ()):

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

    print("run in didReceive")

    let a = ViewController()
    a.get()

}


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {


    UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.sound,.badge, .carPlay], completionHandler: { (granted, error) in
        if granted {
            print("granted")
        }else{
            print("not granted")
        }
    })

    UNUserNotificationCenter.current().delegate = self

    return true
}

Я просто хочу запускать функцию "viewcontroller" только тогда, когда приложение работает в фоновом режиме ...

1 Ответ

0 голосов
/ 05 марта 2019

Одна проблема заключается в этой строке:

let a = ViewController()

Вы создаете «свободный» контроллер вида, а затем выбрасываете его.Вероятно, вам потребуется ссылка на некоторый существующий контроллер представления, который уже в интерфейсе.

Более широкой проблемой может быть ложное предположение о том, что userNotificationCenter(_:didReceive:withCompletionHandler:)для.Он не вызывается, чтобы указать, что появилось уведомление об уведомлении (то есть уведомление сработало).Он вызывается для указания того, что пользователь взаимодействовал с с уведомлением, таким как касание или (если так настроено) отклонение предупреждения.Предупреждающий баннер, который просто появляется и снова исчезает, без взаимодействия с пользователем, не вызовет userNotificationCenter(_:didReceive:withCompletionHandler:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...