iosobjective-capple-push-notificationsurbanairship.com

iOS push notification received when app is running in foreground


From my understanding, when app is running or in the foreground and a push notification is received, the app should NOT show any alert but the app delegate will call the didReceiveRemoteNotification delegate method and I should handle the push notification in that callback.

The push notification should ONLY display alerts/banners when the app is in the background.

However, our app gets push notification alert with an OK button when the app is running or in the foreground sometime, not all of the time. I'm wondering if it is something new in iOS 7 (I have never heard of this) or is it because I'm using UrbanAirship for push notification for our iOS app using alias of the user. The app will display the push alert when running and run the callback in didReceiveRemoteNotification.

Scratching my head over this. Does anyone know why?


Solution

  • When the App is in foreground, it should not display anything.

    If you see alertView, it means you provided code for it.

    Something along the following lines:

    -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
        UIApplicationState state = [application applicationState];
    
        if (state == UIApplicationStateActive) {
            //app is in foreground
            //the push is in your control
        } else {
            //app is in background:
            //iOS is responsible for displaying push alerts, banner etc..
        }
    }
    

    If you have implemented pushNotificationDelegate

    [UAPush shared].pushNotificationDelegate = self;
    

    then override, and leave it blank

    - (void)displayNotificationAlert:(NSString *)alertMessage
    {
      //do nothing
    }