user1960169
user1960169

Reputation: 3663

How to handle Remote push notifications in didreceiveRemoteNotification in AppDelegate

For my Remote push notifications I have handle like this in my 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];
    }
}

This is working fine. But my problem is when the app is in active state its automatically redirect to the relavent page before click the notification. But I want to keep the apps current screen as it is when it is in the forground and when only user clk the notification redirect to the relavant page. How can I do this? Please help me. Thanks

Upvotes: 0

Views: 491

Answers (1)

Sachin
Sachin

Reputation: 367

If your app is in active state, you can show your notification details in a UIAlertView. User will perform the action through the alert. But you cannot expect the notification in this state.

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

Upvotes: 1

Related Questions