Ios 从推送通知打开视图控制器

Ios 从推送通知打开视图控制器,ios,objective-c,parse-platform,push-notification,Ios,Objective C,Parse Platform,Push Notification,我不知道如何从推送通知打开视图控制器。我正在使用Parse.com,应用程序可以完美地接收通知。唯一的问题是当从推送通知打开时,应用程序只会返回到用户在退出应用程序之前的任何视图 在我的AppDelegate中,这是我拥有的: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (launchOptions !=

我不知道如何从推送通知打开视图控制器。我正在使用Parse.com,应用程序可以完美地接收通知。唯一的问题是当从推送通知打开时,应用程序只会返回到用户在退出应用程序之前的任何视图

在我的AppDelegate中,这是我拥有的:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

 {


if (launchOptions != nil)
{
   NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];


        NSString *key = ((NSString*)[dictionary objectForKey:@"option"]);

    if([key isEqualToString:@"2"]){


        StatViewController *statVC = [[StatViewController alloc] initWithNibName:@"StatViewController" bundle:nil];
        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:statVC];
        navController.navigationBarHidden = NO;
        self.viewController = navController;
        self.window.rootViewController = self.viewController;}
}


/*Every other parse info needed i.e clientkey*\
现在,当我转到Parse.com发送通知时,以下是我作为json使用的内容:

 { "content-available": 1, "sound": "", "alert": "Testing!!!!!!", "option": "2" }

我做错了什么

您也需要处理此方法:

-(void)application:(UIApplication*)application-didReceivereMotenofication:(NSDictionary*)userInfo

这是在应用程序当前正在运行时调用的方法

-(BOOL)应用程序:(UIApplication*)应用程序didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
是应用程序从头启动时调用的内容,也是当应用程序关闭且用户通过滑动推送通知或点击通知中心中的通知打开应用程序时调用的内容


编写一个方法,如
-(void)handlePushDictionary:(NSDictionary*)pushDictionary shouldPromptUserBeforeNavigation:(BOOL)shouldPromptUserBeforeNavigation
,它们都使用这个方法。我有一个BOOL来指定在导航到推送之前应显示一个警报,以防用户正在积极使用该应用程序(我不想在未经他们同意的情况下将他们移动到另一个页面)。

试试这个,看看它是否能让你更接近。与更改
rootViewController
不同,我们只使用您(大概)已经设置的现有导航控制器

- (void)handlePushDictionary:(NSDictionary *)pushDictionary
{
    if ([[pushDictionary objectForKey:@"option"] isEqualToString:@"2"])
      {
        StatViewController *statVC = [[StatViewController alloc] initWithNibName:@"StatViewController" bundle:nil];
        // Use the existing nav controller
        [self.navigationController pushViewController:statVC animated:YES];
        self.navController.navigationBarHidden = NO;
      }
}

嘿,谢谢你的回答:)我有前两个,第三个我会加上,因为你说的有道理。RE:我原来的问题是“我想知道当应用程序从推送通知启动时,如何打开视图控制器。NSString是相等字符串吗?“字典?”哈勒森唱出了凯尔·罗布森刚才说的话。当字典包含您预先确定的某种类型的指示器时,您可以将所需的
UIViewController
推到您的
UINavigationController
@JaredH谢谢!好的,我把这个添加到AppDelegate:-(void)handlePushDictionary:(NSDictionary)dictionary shouldPromptUserBeforeNavigation:(BOOL)shouldPromptUserBeforeNavigation{if(dictionary!=nil){NSString*key=((NSString)[dictionary objectForKey:@“option”]);if([key IseQualtString:@“2”]){}-但是什么也没发生:(谢谢你对我非常耐心。就在我看到这个回复之前,我在didFinishLaunchingWithOptions:NSDictionary*userInfo=[launchOptions objectForKey:UIApplicationLaunchOptions远程通知键];if(userInfo!=nil)[自我应用:应用程序DidReceiveMotonification:userInfo];//在DidReceiveMotonification中,我有我需要的指标,就像您在上一次回复中提到的那样。它有效(!!!!!!!))非常感谢。