2012-04-27 2 views
2

Я получаю мои уведомления успешно для iOS 5. Я хочу, чтобы вы могли отправлять пользователям конкретное представление при прокрутке или нажатии push-уведомления в центре уведомлений.Push view from push notification

Контроллер вида (просмотр) Я хочу, чтобы пользователь пошел против того, чтобы начать мое приложение, это «groceryStoreViewController». Я прочитал, что это делается в didFinishLaunchingWithOptions или didReceiveRemoteNotification, но я не уверен.

Если кто знает, как это сделать, я был бы очень признателен, потому что это действительно была борьба.

Благодаря

EDIT

Так что вопрос в том, что я хочу конкретный контроллер представления должен быть открыт, когда пользователь вводит уведомление, но я также хочу UITabBar остаться. Я не смог это сделать, и это связано с тем, что я показываю subview, я считаю. Пожалуйста, дайте мне знать, что вы думаете и благодарите вас.

- (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; 

} 
+0

вопрос не определен.! –

+3

@hp iOS Coder: Не каждый пользователь здесь, на стеке, может хорошо говорить по-английски. поэтому, пожалуйста, будьте любезны и дайте ему шанс. – filou

ответ

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; 
} 
+0

Можете ли вы привести пример? Значит много. Спасибо –

+0

@AlexG пример добавлен. – jcm

+0

@ jcm: Я попытался использовать ваш код с новой функцией раскадровки. делегация на вид не работает. У вас есть опыт в раскадровке? – filou