如何根据远程通知类型将用户重定向到各种屏幕
how to redirect user to various screen based on remote notification type
我在我的应用程序中收到远程通知。以下代码写在 AppDelegate
文件中,当我收到通知时调用该文件。
应用程序在后台时收到通知
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("Notification Recieved")
UIApplication.shared.applicationIconBadgeNumber += 1
//process notification
for (key,val) in userInfo{
let nkey = key as! String
if nkey == "notificationType"{
let notificationType = val as! String
handleNotificationScreen(type: notificationType)
}
}
}
当应用程序在后台并且用户点击该函数中的通知时会调用上述函数 userInfo
是一个包含通知信息的负载。在 userInfo 中,我从服务器传递 notificationType
,其中包含各种值,例如 TASK
、KRA
等
现在,基于这些 notificationType
值,我想启动不同的屏幕。
如果 notificationType 是 TASK
然后在用户点击通知时启动任务屏幕。
我有一个 TabBarController
有多个 viewControllers
viewControllers = [taskController,messageController,notificationConroller,userProfileNavigationController,empCorner,perfomranceVC]
现在我应该如何在 handleNotificationScreen(type: notificationType)
函数中启动屏幕。
func handleNotificationScreen(type: String){
switch type {
case "KRA":
print("anc")
case "TASK":
print("task")
case "EMPMONTH":
print("empMonth")
default:
print("none")
}
}
谢谢大家的帮助。
获取 TabBarController
和内部 handleNotificationScreen
的引用,如果你想在 Appdelegate
内部获取 TabBarControllers
,像这样声明 属性 可选.
var tabbarController: UITabBarController?
在 didFinishLaunchingWithOptions
函数中调用此
tabbarController = self.window?.rootViewController as? UITabBarController
现在可以使用 tabbarController 在您想要的功能中调用您的特定控制器。
func handleNotificationScreen(type: String){
switch type {
case "KRA":
print("anc")
case "TASK":
print("task")
tabBarController?.selectedIndex = 0 //it will open taskbarcontroler
case "EMPMONTH":
print("empMonth")
default:
print("none")
}
}
我在我的应用程序中收到远程通知。以下代码写在 AppDelegate
文件中,当我收到通知时调用该文件。
应用程序在后台时收到通知
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("Notification Recieved")
UIApplication.shared.applicationIconBadgeNumber += 1
//process notification
for (key,val) in userInfo{
let nkey = key as! String
if nkey == "notificationType"{
let notificationType = val as! String
handleNotificationScreen(type: notificationType)
}
}
}
当应用程序在后台并且用户点击该函数中的通知时会调用上述函数 userInfo
是一个包含通知信息的负载。在 userInfo 中,我从服务器传递 notificationType
,其中包含各种值,例如 TASK
、KRA
等
现在,基于这些 notificationType
值,我想启动不同的屏幕。
如果 notificationType 是 TASK
然后在用户点击通知时启动任务屏幕。
我有一个 TabBarController
有多个 viewControllers
viewControllers = [taskController,messageController,notificationConroller,userProfileNavigationController,empCorner,perfomranceVC]
现在我应该如何在 handleNotificationScreen(type: notificationType)
函数中启动屏幕。
func handleNotificationScreen(type: String){
switch type {
case "KRA":
print("anc")
case "TASK":
print("task")
case "EMPMONTH":
print("empMonth")
default:
print("none")
}
}
谢谢大家的帮助。
获取 TabBarController
和内部 handleNotificationScreen
的引用,如果你想在 Appdelegate
内部获取 TabBarControllers
,像这样声明 属性 可选.
var tabbarController: UITabBarController?
在 didFinishLaunchingWithOptions
函数中调用此
tabbarController = self.window?.rootViewController as? UITabBarController
现在可以使用 tabbarController 在您想要的功能中调用您的特定控制器。
func handleNotificationScreen(type: String){
switch type {
case "KRA":
print("anc")
case "TASK":
print("task")
tabBarController?.selectedIndex = 0 //it will open taskbarcontroler
case "EMPMONTH":
print("empMonth")
default:
print("none")
}
}