Programmati c переключается на другой ViewController из AppDelegate в Swift 5 - PullRequest
0 голосов
/ 28 марта 2020

Я использую следующий код в AppDelegate для обработки определенного c типа удаленных уведомлений:

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

        if let notification = response.notification.request.content.userInfo as? [String:AnyObject] {
            if let aps = notification["aps"] as? [String:AnyObject] {
                if let target = aps["target-content-id"] {

                    switch (target as! String) {
                    case "ChatDetailViewController":

                        if let threadId = aps["thread-id"] {

                            if let rootView = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChatDetailViewController") as? ChatDetailViewController {
                                rootView.conversation = Int(threadId as! String)!
                                print("CHECKPOINT")
                                self.window = self.window ?? UIWindow()
                                self.window!.rootViewController = rootView
                                self.window!.makeKeyAndVisible()
                            }
                        }
                    default:
                        print("default")
                    }
                }
            }
        }
        completionHandler()
    }

Кажется, все работает хорошо . Когда я нажимаю на уведомление, вызывается делегат didReceive. Кажется, все выполнено так, как должно. Я вижу, что print("CHECKPOINT") попадает в консоль, и дополнительный вывод консоли показывает, что код в ChatDetailViewController начинает работать (то есть может видеть, что он открывает сокет для разговора, который я передаю через thread-id .

Хотя моя проблема в том, что на экране ничего не происходит. Вид не меняется , и я не знаю почему.

Я тоже используя тот же код для переключения на другой ViewController в SceneDelegates, и там, кажется, он работает просто отлично . Не уверен, что я делаю не так и могу использовать некоторую помощь. Большое спасибо всем !!!

...