Bandish Dave
Bandish Dave

Reputation: 811

Receiving APNS notification but cant display on device in ios

Hello everyone, I am trying how to implement pushnotification.For this i have read apple official document for push notification and also read raywenderlich blog and i understand the flow of pushnotication very well. I have created development and production certificate,profile and its working fine and push was successfully sent and receiving in -

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
      *** display message in uialertview******
}

but my problem is how can i display push in my device like other push notification on top up side for both when my application is foreground and background too.

currently i am trying for IOS 7.0 and XCode Version 5.1.1 (5B1008)

Thanks In advance.

Upvotes: 2

Views: 2864

Answers (4)

Gajendra Rawat
Gajendra Rawat

Reputation: 3663

If you want to receive notification in top of the device like banner style then follow these steps.

  1. First, you need to launch the 'Settings' app on your iOS device.

  2. Once you're in, choose 'Notifications' from the list of options.

  3. Here's a list of every app that supports push notifications. The ones at the top have been granted permission by you

  4. You can also set the alert style. You can choose the banners that conveniently appear at the top of the screen, or full-on pop-ups that force you to take action before they go away. Or you can just choose 'None'.

For more detail check this link.

Hope you will get something from my answer.

Upvotes: 0

Zeeshan
Zeeshan

Reputation: 4244

First of all check via these methods in App Delegate that if your registered successfully to APNS.

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
}
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
}

then in

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSDictionary *Notification = userInfo;

    NSString *title = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"title"];
    NSString *body = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"body"];
if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive)
    {
}


else if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateInactive || [[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
{
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
        localNotification.userInfo = userInfo;
        localNotification.soundName = UILocalNotificationDefaultSoundName;
        localNotification.alertBody = body;
        localNotification.fireDate = [NSDate date];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
 }

}

If your application is in active state show UIAlertView. if its not you need to show a UILocalNotification.

Upvotes: 4

iPatel
iPatel

Reputation: 47059

As per Apple's note push/local notification will be display only when app is background mode. If notification is arrive at the time of app is on foreground/active then you need to manually manage it because iOS won't show a notification banner/alert That's default design.

I just put my logic here for manage notification when app in foreground mode:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{    
    // check the application state for app is active or not. 
    if (application.applicationState == UIApplicationStateActive)
    {
       // Nothing to do if applicationState is Inactive, the iOS already displayed an alert view.
       UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
       [alertView show];
    }

}

Upvotes: 0

ChintaN -Maddy- Ramani
ChintaN -Maddy- Ramani

Reputation: 5164

When you are in Background mode then push notification will display as per your application notification settings from notification centre. you dont have to display ios will do that.

when you are in Foreground mode then notification will receive and -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo method will be called. so using this method you get userinfo. just NSLog userinfo dictionary and then you can create customview with label at top and animate it like ios default banner.

Hope this will help you.

Upvotes: 1

Related Questions