2015-09-23 2 views
0

Для моего удаленного уведомления толчка я имею обрабатывать как это в моем AppDelegateКак обращаться с удаленным уведомлением толчка в didreceiveRemoteNotification в AppDelegate

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    dm=[DataManager sharedManager]; 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    dm.screenHight=[UIScreen mainScreen].bounds.size.height; 
    dm.screenWidth=[UIScreen mainScreen].bounds.size.width; 
    NSLog(@"^^^^^^^^^^^^^^ Screen hight ^^^^^^^^^^^^^ %i",dm.screenHight); 

    // for PAYPAL 

    [PayPalMobile initializeWithClientIdsForEnvironments:@{PayPalEnvironmentProduction : @"YOUR_CLIENT_ID_FOR_PRODUCTION",PayPalEnvironmentSandbox : @"AQhrXRAyHg6nuJCma6vkl1ZtxmWUynzuf2temitMSJEZf8n74p9iKAt6TgSf"}]; 

    /// FOR PAYPAL 
    NSLog(@"%@",userInfo); 
    NSDictionary *dictionary=[userInfo objectForKey:@"jsonContent"]; 
    dm.notificationDictionary=dictionary; 
    if (application.applicationState == UIApplicationStateActive) 
    { 
     UIViewController *viewController1; 
     viewController1 = [[SplashViewController alloc] initWithNibName:@"SplashViewController" bundle:nil]; 

     UINavigationController *aNavigationController=[[UINavigationController alloc] initWithRootViewController:viewController1]; 

     self.navigationcontroller = aNavigationController ; 
     self.navigationcontroller.navigationBar.hidden=YES; 

     [self.window setRootViewController:self.navigationcontroller]; 
     [self.window makeKeyAndVisible]; 
    } 
    else 
    { 
     UIViewController *viewController1; 
     viewController1 = [[SplashViewController alloc] initWithNibName:@"SplashViewController" bundle:nil]; 

     UINavigationController *aNavigationController=[[UINavigationController alloc] initWithRootViewController:viewController1]; 

     self.navigationcontroller = aNavigationController ; 
     self.navigationcontroller.navigationBar.hidden=YES; 

     //[self.window addSubview:[self.navigationcontroller view]]; 
     //[self.window setRootViewController:viewController1]; 
     [self.window setRootViewController:self.navigationcontroller]; 
     [self.window makeKeyAndVisible]; 
    } 
} 

Это работает отлично. Но моя проблема заключается в том, что приложение в активном состоянии автоматически переадресовывает его на релевантную страницу, прежде чем нажимать уведомление. Но я хочу, чтобы приложения отображались на экране, как есть, когда он находится на поле, и когда только пользователь clk направляет уведомление на страницу relavant. Как я могу это сделать? Пожалуйста, помогите мне. Thanks

ответ

1

Если ваше приложение находится в активном состоянии, вы можете отображать информацию о своем уведомлении в UIAlertView. Пользователь выполнит действие с помощью предупреждения. Но вы не можете ожидать уведомления в этом состоянии.

UIApplicationState appState = [application applicationState]; 
    if (appState == UIApplicationStateActive) { 
     NSString *cancelTitle = @"Close"; 
     NSString *showTitle = @"Show"; 
     NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"]; 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@“Your Title” 
                  message:message 
                  delegate:self 
                cancelButtonTitle:cancelTitle 
                otherButtonTitles:showTitle, nil]; 
     [alertView show]; 
     return; 
    } 
+0

Лучше использовать «UIAlertController» вместо «UIAlertView», поскольку Apple предлагает это. –

Смежные вопросы