2017-08-04 1 views
0

Mon application est en cours d'exécution Je tape sur la notification de sa page d'accueil mais je veux ouvrir une page particulière, mais son travail pour lorsque l'application est en premier plan et en arrière-plan, mais j'ai écrit ce code La vue est affichée pour tout état.Comment naviguer vers une page particulière objectivec lorsque vous appuyez sur la notification que lorsque l'application n'est pas en cours d'exécution?

- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
didReceiveNotificationResponse:(UNNotificationResponse *)response 
     withCompletionHandler:(void (^)())completionHandler 
     { 

      NSDictionary *userInfo = response.notification.request.content.userInfo; 
      NSDictionary *dict = userInfo[kAps]; 
      NSString *str = [NSString stringWithFormat:@"%@",[dict valueForKey:kAlert]]; 
      UINavigationController *navController = (UINavigationController *)self.window.rootViewController; 
      MyOrderDetailVC *view = [[UIStoryboard storyboardWithName:kMainStoryboard bundle:nil] instantiateViewControllerWithIdentifier:@"MyOrderDetailVC"]; 

      NSString *orderstatus = userInfo[kgcmnotificationorderstatus]; 
      NSString *ordertype = userInfo[kgcmnotificationordertype]; 
      view.isFromSideMenu = YES; 
      view.isfromViewOrders = YES; 
      view.status = orderstatus; //[NSString stringWithFormat:@"%@",[dictOrderDetails valueForKey:korderstatus]]; 
      view.isProduct =ordertype; 
      view.strOrderStatus = orderstatus; 
      view.strProgramId = @"-1"; 
      if([ordertype isEqualToString: @"0"]) 
      { 
      view.isBookedOrders = NO; 
      } 
      if([ordertype isEqualToString: @"1"]) 
      { 
      view.isBookedOrders =YES; 
      } 
      if([orderstatus isEqualToString:@"0"]) 
      { 
      view.strOrderStatus = kPending; 
      } 
      else if([orderstatus isEqualToString:@"1"]) 
      { 
      view.strOrderStatus = kConfirmed; 
      } 
      else if ([orderstatus isEqualToString:@"2"]) 
      { 
      view.strOrderStatus = kCompleted; 
      } 
      [navController.visibleViewController.navigationController pushViewController:view animated:YES]; 

    [[Shared sharedInstance] showAlertViewInViewController:kAppName message:str buttonTitles:@[OK] viewC:self.window.rootViewController handler:nil]; 

} 

Répondre

0

Lorsque votre application ne fonctionne pas et que vous voulez détecter votre Notification dans didFinishLaunchingWithOptions méthode comme ci-dessous

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
{  
    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];  
    if (localNotif) { 
    // Notification detect here 
    // Put your code here so it will be call when your App will not running state and tapped on Notification. 
    }  
} 
+0

Mais il va " - (void) userNotificationCenter: (UNUserNotificationCenter *) centre didReceiveNotificationResponse: (réponse UNNotificationResponse *) withCompletionHandler: (void (^)()) completionHandler "cette méthode parce qu'elle affiche une vue d'alerte qui est appelée dans cette méthode, mais ne navigue pas vers une autre page qui écrit dans cette méthode seulement. –

+0

Vous pouvez obtenir l'état de l'application par if (application.applicationState == UIApplicationStateInactive) { // ouvert à partir d'une notification push lorsque l'application était en arrière-plan } – iPatel

0

Dans didFinishLaunchingWithOptions vérifier notification ou une note

NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
if (notification) 
{ 
    NSLog(@"app recieved notification %@",notification); 
    // open your particular controller 


}else{ 
    NSLog(@"app did not recieve notification"); 
} 
+0

J'ai essayé cela, mais aussi quand j'appuie sur la notification de son retour à la maison page et affichage de l'affichage des alertes, mais pas la navigation vers la page en particulier. –

+0

Vous pouvez ouvrir le contrôleur de vue partilcaur comme suit: UIStoryboard * storyboard = [UIStoryboard storyboardWithName: @ "MainStoryboard_iPhone" bundle: nil]; Yourcontroller * myVC = (Votre contrôleur *) [storyboard instantiateViewControllerWithIdentifier: @ "YourcontrollerId"]; [self.navigationController pushViewController: myVC animé: OUI]; –