按下推送通知时更改 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的主要内容,如果未能解决你的问题,请参考以下文章