IOS Swift-收到推送通知时应用程序未打开特定选定的标签栏控制器索引

Posted

技术标签:

【中文标题】IOS Swift-收到推送通知时应用程序未打开特定选定的标签栏控制器索引【英文标题】:IOS Swift- App does not open specific selected tab bar controller index when push notification is received 【发布时间】:2016-08-01 15:16:34 【问题描述】:

我的应用有 5 个标签栏,每次收到推送通知时,我都希望应用导航到索引中的第三个标签。当应用程序处于前台或后台(处于活动状态)时,我能够实现它。如果应用程序已关闭并且我尝试打开应用程序打开并崩溃的推送通知。 下面是我的代码

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])

    let tabbar:UITabBarController = self.window?.rootViewController as! UITabBarController
    tabbar.selectedIndex = 3

请让我知道我做错了什么。

【问题讨论】:

【参考方案1】:

尝试在diFinishLaunchingWithOptions方法的末尾添加以下代码:

 if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String : AnyObject] 
            _ = notification["aps"] as! [String : AnyObject]

            (window?.rootViewController as! UITabBarController).selectedIndex = 3
        

【讨论】:

当我在 diFinishLaunchingWithOptions 末尾添加时收到以下错误 使用未声明的类型 'UITabbarController' 抱歉,输入错误。应该是TabBar,大写字母B。 这是我仍然有相同错误的确切代码if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String : AnyObject] _ = notification["aps"] as! [String : AnyObject] (window?.rootViewController as! UITabBarController).setSelectIndex = 3 **AppDelegate.swift:96:42:“UITabBarController”类型的值没有成员“setSelectIndex”** setSelectIndex 更改为selectedIndex 乐于助人.. :)【参考方案2】:

你在调试你的代码吗?如果应用程序在那里崩溃,很可能是 window.rootViewController 不是 UITabBarController。

您可以调试它或更改 as!作为? 并且:

tabbar?.selectedIndex = 3

如果应用没有崩溃,则您的标签栏控制器位于其他位置。只要找到它。

还记得在选项字典中检查您的通知。

【讨论】:

您对断开连接的标签栏控制器是正确的。我必须添加延迟才能使代码正常工作。谢谢 @AlessandroRanaldi 你是怎么做到的,因为我的应用程序崩溃了,所以你可以发帖 Dilip,你到底想做什么?

以上是关于IOS Swift-收到推送通知时应用程序未打开特定选定的标签栏控制器索引的主要内容,如果未能解决你的问题,请参考以下文章

如果应用程序终止,则未收到 iOS FCM 推送通知

在 Swift iOS 中推送通知

swift 3,ios 10 - 未收到推送通知 firebase

再次打开设备或 Internet 后,iOS 未收到待处理的 APNs 推送通知

当用户使用 iOS 13 Swift 5 点击推送通知时,在特定视图中打开应用程序

在 IOS 中未收到 FCM 推送通知。而应用程序在后台或终止。我使用 FirebaseMessaging 6.0.9 Pub