Вопрос по xcode, objective-c, ios – Push-просмотр из push-уведомлений

2

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

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

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

Спасибо

EDIT

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

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

}
</code>
вопрос не четко определен. hp iOS Coder
@hp iOS Coder: Не каждый пользователь в стеке может очень хорошо говорить по-английски. так что будь добр и дай ему шанс .. filou

Ваш Ответ

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;
}
@AlexG пример добавлен.
Можете ли вы привести пример? Будет много значить Спасибо Alex G
@ jcm: я пытался использовать твой код с новой функцией раскадровки. Делегация с видом не работает .. У вас есть опыт в раскадровке?
@ AlexisW нет опыта раскадровки, извините. Мы не используем его.
@jcm, кажется, не работает, я запускаю ваш код. launchOptions всегда == ноль, даже когда я открываю приложение по уведомлению ...

Похожие вопросы