2

iOS 5の通知を正常に受信しました。ユーザーが通知センターでプッシュ通知をスワイプまたはタップしたときに、特定のビューにユーザーを送信できるようにしたいです。

ビューコントローラー(ビュー)アプリの起動だけでなく、ユーザーに移動してもらいたいのは「groceryStoreViewController」です。これはdidFinishLaunchingWithOptionsまたはdidReceiveRemoteNotificationで行われることを読みましたが、よくわかりません。

誰かがこれを行う方法を知っているなら、それは本当に苦労していたので、私は本当にそれをいただければ幸いです。

ありがとう

編集

したがって、問題は、ユーザーが通知をタップしたときに特定のView Controllerを開きたいが、UITabBarも残したいということです。私はこれをうまく行うことができませんでした、そしてそれは私が信じるサブビューを表示することと関係があります。ご意見をお聞かせください。ありがとうございました。

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

self.tabBarItem = [[[UITabBarItem alloc] init] autorelease];

 exploreViewController *view1 = [[exploreViewController alloc] initWithNibName:@"exploreViewController" bundle:nil];
view1.title= @"Explore";

Upcoming *view2 = [[Upcoming alloc] initWithNibName:@"Upcoming" bundle:nil];
view2.title = @"Upcoming";

TipsViewController *view3 = [[TipsViewController alloc] initWithNibName:@"TipsView" bundle:nil];
view3.title = @"Tips";

UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:view1];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:view2];
UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:view3];

[view1 release];
[view2 release];
[view3 release];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1,nav2,nav3,nil];
self.tabBarItem = [[[UITabBarItem alloc] init] autorelease];

[nav1 release];
[nav2 release];
[nav3 release];


if (launchOptions != nil)
{  
NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
NSLog(@"Launched from push notification");
//Accept push notification when app is not open
if (remoteNotif) {      

 NSDictionary *alertBody = [remoteNotif objectForKey:@"loc-key"];

 self.window.rootViewController = nav2;  //this is what I want displayed when tapped but also maintain tab bar controller
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];

  }
}
else {

    //Go here if just loading up normally without push
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];

}
  return YES;

}
4

1 に答える 1

3

メソッドで行われdidFinishLaunchingWithOptions:ます。通知が原因でアプリが起動したかどうかを確認し、表示する適切な viewController を設定できます。

何かのようなもの:

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

    // other stuff

    if (launchOptions != nil) {
        NSLog(@"Launched from push notification");
        NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        // Do something with the notification dictionary
        self.myViewController = [LaunchFromNotificationViewController alloc] init];
    } else {
        self.myViewController = [OrdinaryLaunchViewController alloc] init];
    }

    self.window.rootViewController = self.myViewController;
    [self.windows makeKeyAndVisible];
    return YES;
}
于 2012-04-27T06:48:01.423 に答える