如何在快速收到推送通知时打开特定的视图控制器3

当我应用程序没有完全打开阶段时,我点击推送通知警报,我卡住特定的视图控制器不动。

这是我的代码:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { /* fetch and add push notification data */ goAnotherVC() } func goAnotherVC() { if (application.applicationState == UIApplicationState.active) { /* active stage is working */ } else if (application.applicationState == UIApplicationState.inactive || application.applicationState == UIApplicationState.background) { if (type == "1" || type == "2") { let storyboard: UIStoryboard = UIStoryboard(name: "MyAppointments", bundle: nil) let apptVC = storyboard.instantiateViewController(withIdentifier: "NotificationDetailViewController") as! NotificationDetailViewController let navigationController = UINavigationController.init(rootViewController: apptVC) self.window?.rootViewController = navigationController self.window?.makeKeyAndVisible() } else if (type == "3") { let storyboard: UIStoryboard = UIStoryboard(name: "MyAppointments", bundle: nil) let apptVC = storyboard.instantiateViewController(withIdentifier: "NotificationDetailViewController") as! NotificationDetailViewController let navigationController = UINavigationController.init(rootViewController: apptVC) self.window?.rootViewController = navigationController self.window?.makeKeyAndVisible() } else if (type == "4") { let storyboard: UIStoryboard = UIStoryboard(name: "Enquiry", bundle: nil) let enqVC = storyboard.instantiateViewController(withIdentifier: "EnquiryDetailViewController") as! EnquiryDetailViewController let navigationController = UINavigationController.init(rootViewController: enqVC) self.window?.rootViewController = navigationController self.window?.makeKeyAndVisible() } } } 

我可以获得通知,并在应用程序处于活动状态时点击移动特定的VC。 请帮我什么我失踪。

当你的应用程序处于closures状态时,你应该在“ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {”中调用你的API来启动选项。

例:

 if let option = launchOptions { let info = option[UIApplicationLaunchOptionsKey.remoteNotification] if (info != nil) { goAnotherVC() }}