ios应用程序关闭时Firebase通知点击崩溃

Posted

技术标签:

【中文标题】ios应用程序关闭时Firebase通知点击崩溃【英文标题】:Firebase notification click-on crashed when ios app is closed 【发布时间】:2018-03-01 06:36:50 【问题描述】:

当我单击通知时,我希望它打开应用程序的通知视图控制器。所有代码都在 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 函数中创建一些东西吗?谢谢。

【问题讨论】:

【参考方案1】:

你需要分配根视图控制器

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



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

【讨论】:

我应该在 didFinishLaunchingWithOptions 函数中添加这个吗? HomeViewController 还包含一个导航控制器。可能最好的方法是加载欢迎页面? 在这种情况下,您可以简单地使用 homeview 控制器更新您的 rootview 控制器谢谢

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

使用firebase问题推送通知(ios,swift 4)[关闭]

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

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

当用户点击 Flutter App 中的 Firebase 通知时如何打开链接?

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

Android Firebase 推送通知包数据问题 [关闭]