Ios 接收推送通知时打开特定选项卡栏

Ios 接收推送通知时打开特定选项卡栏,ios,objective-c,cocoa-touch,push-notification,tabbar,Ios,Objective C,Cocoa Touch,Push Notification,Tabbar,收到推送通知时,如何打开特定选项卡栏 我已经把[self.tabBarController setSelectedIndex:2]放进去了;在ViewDidDisplay上,发生的是在数据记录中,它显示它通过tabBar 2 viewController,但它没有打开/显示该页面,并保持在firstView controller/第一个tabBar上 然后在我终止应用程序并打开后,它会自动/突然打开tabBar 2 viewController 有人能给出一些想法或示例代码来解决这个问题吗 这是

收到推送通知时,如何打开特定选项卡栏

我已经把[self.tabBarController setSelectedIndex:2]放进去了;在ViewDidDisplay上,发生的是在数据记录中,它显示它通过tabBar 2 viewController,但它没有打开/显示该页面,并保持在firstView controller/第一个tabBar上

然后在我终止应用程序并打开后,它会自动/突然打开tabBar 2 viewController

有人能给出一些想法或示例代码来解决这个问题吗

这是在我的DidReceiveMotonification中

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    NSLog(@"Remote notification received");

    if([userInfo valueForKey:@"app"]) {

        NSString *action_app = [userInfo valueForKey:@"app"];
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:action_app forKey:@"app"];

        NewVC *sample=[[NewVC alloc]init];
        [sample viewDidLoad];

        //[self.tabBarController setSelectedIndex:2];

        [self clearNotifications];

    }else{

        NSLog(@"---nothing to read---");
    }
}

NewVC位于tabbar 2上。

您必须更改tabbar selectedIndex,如

- (void)application:(UIApplication *)application  didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if([userInfo valueForKey:@"app"]) {

      NSString *action_app = [userInfo valueForKey:@"app"];
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
     [defaults setObject:action_app forKey:@"app"];

   UITabBarController *tabb = (UITabBarController *)self.window.rootViewController;
   tabb.selectedIndex = 2;
 }
}
斯威夫特 这是推送通知数据:

{

  "aps": {
    "alert" : "Hello Your Order ID 107922341457c134962d002 is Ready. Thank you For choosing us!!",
    "badge" : "1",
    "sound" :"default"
     },

  "order": {
    "item_name" : "Spanish Masala",
    "order_id":"107922341457c134962d002" ,
    "food_id":"15"
    }
}
以下是AppDelegate.swift中的代码

以下是我的做法:

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let tabBarVC = storyboard.instantiateViewController(withIdentifier: StoryboardIDKeys.tabBarViewController.rawValue) as? TabBarViewController //{
        tabBarVC?.selectedIndex = 1
        self.window?.rootViewController = tabBarVC

在appDelegate的DidReceiveEmotentification方法上编写setSelectedIndex,而不是ViewDidDisplay。@Viruss mca..我已经这样做了,但是没有发生任何事情。你做了什么?@Viruss mca..我已经在上面讨论了代码..还有一个问题,如果应用程序处于活动状态,这将起作用。但是,当应用处于非活动状态或终止时,它将只打开主页/选项卡,而不打开选项卡2。当收到通知时,即使应用处于非活动状态或终止状态,我如何打开选项卡2?我已将该代码放入“didFinishLaunchingWithOptions”,但它不起作用。bro如果当你点击通知中心的通知时应用处于非活动状态,它将调用此方法。是的,我已经把代码放进了这个方法中,但它仍然不起作用。我尝试了很久才让它起作用,但就是找不到正确的方法。谢谢你的帮助。@DilipTiwari:你可以用不同的思路解释你的问题。
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let tabBarVC = storyboard.instantiateViewController(withIdentifier: StoryboardIDKeys.tabBarViewController.rawValue) as? TabBarViewController //{
        tabBarVC?.selectedIndex = 1
        self.window?.rootViewController = tabBarVC