Выполнение Segue в ответе didReceive: UNNotificationResponse - PullRequest
0 голосов
/ 04 ноября 2019

Я новичок в Swift и пытаюсь интегрировать его с push-уведомлениями из firebase. Само push-уведомление работает просто отлично, но у меня возникают трудности при открытии определенного вида при прикосновении к уведомлению.

Сначала я попытался инициализировать контроллер корневого представления методом instantaiteViewController, но это не сработало, поэтому я во-вторыхпопробовал, если я могу выполнить переход с контроллера начального представления, когда пользователь нажимает на уведомление.

Второе решение - это то, чего я хочу достичь в настоящее время. И вызов метода execute segue из «ответа didReceive: UNNotificationResponse» из UNUserNotificationCenterDelegate

Кажется, он выполняет переход. проверка путем печати строки в ViewDidLoad() и ViewWillApear целевого ViewController.

За исключением того, что на экране не отображается ее. На экране все еще отображается начальный контроллер вида даже после запуска конечного контроллера вида ViewDidload

Это жизненный цикл или он просто не в состоянии это сделать?

func userNotificationCenter(_ center: UNUserNotificationCenter,
                          didReceive response: UNNotificationResponse,
                          withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo
    if let messageID = userInfo[gcmMessageIDKey] {
        print("Message ID: \(messageID)")
    }

    let notification = response.notification
    if notification.request.trigger is UNPushNotificationTrigger{
        print("didRecieve Push Notification")
    }else{
        print("did Recieve Local Notification")
    }
    print("notification.requset.identifier: \(notification.request.identifier)")

    self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name:"Main",bundle: nil)
    print(storyboard)
    if let userShowCase = storyboard.instantiateViewController(withIdentifier:"userShowCase") as? userShowCaseViewController {
        print(storyboard)

        self.window?.rootViewController = userShowCase
        self.window?.makeKeyAndVisible()
        userShowCase.performSegue(withIdentifier: "showCase2Login", sender: userShowCase)

    }

    completionHandler()
}
...