应用程序被杀死时点击推送通知后应用程序崩溃

Posted

技术标签:

【中文标题】应用程序被杀死时点击推送通知后应用程序崩溃【英文标题】:App crashes after push notification is tapped when app is killed 【发布时间】:2018-05-19 16:22:42 【问题描述】:

收到远程通知后,我试图在我的 CustomTabBarController 中启动特定的 viewController。但不知何故,当应用被杀死时,应用总是崩溃。

意思是说,杀死应用程序->收到推送通知->点击通知->应用程序启动并崩溃。当我从锁屏点击通知时也会发生这种情况。

当应用程序在后台时我可以执行,但在应用程序被终止时不能执行。到目前为止我的代码:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 

    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    
    ...
    
    if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary 
        guard let rootViewController = self.window?.rootViewController as? CustomTabBarController else 
            return true
        
        rootViewController.selectedIndex = 1
        
    

    return true


func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 

    if application.applicationState == .background || application.applicationState == .inactive 
        
        guard let rootViewController = self.window?.rootViewController as? CustomTabBarController else 
            return
        
        rootViewController.selectedIndex = 1
            

我已经按照post 检查了launchOptions,但它仍然崩溃。接下来我可以尝试什么?

【问题讨论】:

@matt 如何获取日志?当应用程序被杀死时,控制台终止。抱歉,我实际上对此很陌生。 【参考方案1】:

评论这两行

// window = UIWindow(frame: UIScreen.main.bounds)
// window?.makeKeyAndVisible()

因为覆盖窗口属性会破坏情节提要的初始化(使 rootVC 为零)并且在 return true 窗口必须有一个之前

【讨论】:

我不使用情节提要。我以编程方式表达我的观点。 抱歉,我刚刚尝试了您的代码,它确实有效。谢谢! 我正在使用 REACT Native。

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

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

应用程序未运行时的远程推送通知崩溃

当应用程序被杀死时,在推送通知后执行操作:react-native,IOS

在接收推送通知时,点击事件应用程序在导航后崩溃

使用swift杀死应用程序时如何存储ios推送通知

iOS React 在应用程序被杀死时推送通知