Xcode: gestion de la reception des notifications push

mardi 18 juin 2013

Concernant la gestion de la réception des notifications push, il y a plusieurs cas à traiter:

  • Si l’application est active (l’utilisateur est dedans):
  • Si l’application est inactive (en background):
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
        // SI APPLICATION ACTIVE !!!!
        if (application.applicationState == UIApplicationStateActive) {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Notification récue"
                                                                message:[NSString stringWithFormat:@"Cette application vient de recevoir cette notification :\n%@",
                                                                         [[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]
                                                               delegate:self
                                                      cancelButtonTitle:@"OK"
                                                      otherButtonTitles:nil];
            [alertView show];
        }else{// APPLICATION EN BACKGROUND MAIS INACTIVE
    
        }
    }
    

    Dans ce cas-ci, le payload de la notification se trouve dans userInfo

  • Si l’application n’est pas lancée et pas en background:
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        BOOL bopenbyNotif = FALSE;
        // SI ON RECOIT UNE NOTIFICATION ET APPLICATION NON LANCER!!!
        if (launchOptions != nil)
        {
    	// GET NOTIFICATION
            NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    	if (dictionary != nil)
    	{
                bopenbyNotif = TRUE;
    	}
        }
    

    Dans ce cas-ci, la notification se trouve dans la variable launchOptions

    Astuce: Pour tester ce cas, il est possible de compiler et pusher notre application sur un device sans que celui-ci soit lancé (par défaut).
    Pour ça, allez dans Edit scheme > Run MyApp.app > Info et checker wait for MyApp.app to launch

Tags: evenements , notification push , Notifications