按下推送通知时更改 tabbarindex

Posted

技术标签:

【中文标题】按下推送通知时更改 tabbarindex【英文标题】:Change tabbarindex when push notification is pressed 【发布时间】:2021-07-16 01:50:43 【问题描述】:

我有一个接收推送通知的应用。当我按下通知时,我想导航到我的 UITabBarController 的第一个索引,它必须在应用程序打开或不打开时执行。我的基本索引是第二个,我的意思是,索引 = 1,第一个索引是 0,这是我的视图控制器目标。我已经在 AppDelegate 中测试了一些代码,但它不起作用。我正在使用 OneSignal 服务,有什么想法吗?谢谢。

此代码在 didFinishLaunchingWithOptions 函数中

 let notificationOption = launchOptions?[.remoteNotification]
    if let notification  = notificationOption as? [AnyHashable : Any]
        print(notification)
        (window?.rootViewController as? UITabBarController)?.selectedIndex = 0
    

这段代码在 didReceiveRemoteNotification 函数中

print(userInfo)
    (window?.rootViewController as? UITabBarController)?.selectedIndex = 0

【问题讨论】:

【参考方案1】:
let KAppDelegate = (UIApplication.shared.delegate as! AppDelegate)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) 
         let userInfo = response.notification.request.content.userInfo
        let strNotification = String(format: "Action Identifier : %@, UserInfo Dict : %@", response.actionIdentifier, userInfo)
        print(strNotification)
        handleNotification(userInfo: userInfo)
        completionHandler()
    

func handleNotification(userInfo : [AnyHashable : Any]) 
        if let appNav = KAppDelegate.window?.rootViewController as? UINavigationController
    if let objTabbarController = appNav.viewControllers.first as? UITabBarController
        if let objTempNotificationController = objTabbarController.selectedViewController 
            if !objTempNotificationController.isKind(of: "Your controller name like NotificationViewController".classForCoder())
                objTabbarController.selectedViewController = objTabbarController.viewControllers![0]
                appNav.popToRootViewController(animated: true)
            
        else
         //failure to not get object
        
    else
        //failure to not get object
    
    

【讨论】:

嗨,感谢您的回复,我有一个疑问,这段代码将在我的项目中的什么位置?哪个类或函数?

以上是关于按下推送通知时更改 tabbarindex的主要内容,如果未能解决你的问题,请参考以下文章

从 SwiftUI 应用程序中更改推送通知授权

从通知托盘按下推送通知时,Android GCM 应用程序崩溃

Swift 从用户向用户发送推送通知 Firebase

收到推送通知时如何更改范围变量

iOS - 在收到推送通知事件时更改视图的内容

服务器更改时推送通知不起作用