我收到推送通知,并在有效负载上检查应用程序是否在后台。如果是,我想将用户重定向到“消息”屏幕。我的应用程序具有导航控制器以及滑动菜单。我尝试使用此代码:

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
            if ( application.applicationState == UIApplicationState.inactive || application.applicationState == UIApplicationState.background  ) {
                     let storyboard = UIStoryboard(name: "Main", bundle: nil)
                     let vc = storyboard.instantiateViewController(withIdentifier: "Message")
                     window?.rootViewController = vc
            }
    }


但是,此屏幕崩溃时会加载,因为缺少许多组件(UINavigation栏等)。是否还有另一种重定向方法,也许是在创建必要的序列时?

最佳答案

如果缺少导航栏/导航项,是否在将视图控制器设置为根vc之前尝试将其推入导航堆栈?例如 :

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "Message")
let navVC = UINavigationController(rootViewController: vc)
window?.rootViewController = navVC

关于ios - 收到推送通知后重定向到特定屏幕-Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41985817/

10-11 19:56
查看更多