当ios应用关闭时,Firebase通知点击崩溃

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当ios应用关闭时,Firebase通知点击崩溃相关的知识,希望对你有一定的参考价值。

当我点击通知时,我希望它打开应用程序的通知viewController。所有代码都在AppDelegate.m中

我有一个函数来找到topMostController

- (UIViewController *)topMostController {
    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
    while (topController.presentedViewController) {
        topController = topController.presentedViewController;
    }
    return topController;
}

然后还有另一个显示通知viewController的函数

    UINavigationController *navigationController = (UINavigationController *)[self topMostController];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryBoard" bundle:nil];

    MyViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];

    [navigationController pushViewController:myController animated:YES];

如果应用程序打开,它工作正常。但是,当应用程序关闭时,如果我单击通知,它将崩溃。错误是

Fatal Exception: NSInvalidArgumentException
-[ViewController pushViewController:animated:]: unrecognized selector sent to instance

我认为没有topMostController或者navigationController在这种情况下是无效的。我需要使用UINavigationController,因为我想要一个“后退”按钮返回页面(主页面)而不是关闭应用程序。在这种情况下,如何使topMostController有效?我应该在didFinishLaunchingWithOptions函数中创建一些东西吗?谢谢。

答案

你需要分配根视图控制器

   self.navigationController = RootNavigationControllerViewController(rootViewController: HomeViewController.init())



    self.window?.rootViewController =  self.navigationController
    self.window?.makeKeyAndVisible()

以上是关于当ios应用关闭时,Firebase通知点击崩溃的主要内容,如果未能解决你的问题,请参考以下文章

当 iOS 应用程序被暂停/杀死并且用户点击通知时如何处理 Firebase 推送通知?

使用@react-native-firebase/messaging 收到通知后应用程序崩溃

在 Mobilefirst V7.1 上使用 Clevertap 推送通知在启动画面上出现 iOS 应用程序崩溃问题

在 Firebase Cloud Messaging 上订阅数百个主题时,iOS 应用程序崩溃

iOS - 从本地通知启动时托管对象上下文崩溃应用程序

当该应用的通知关闭时,在 Android 上接收 Firebase 静默通知