Xcode: gestion de la reception des notifications push
mardi 18 juin 2013Concernant 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