Notifications

  • iOS
  • watchOS
  • tvOS
 

Avant-propos

Les notifications push peuvent déclencher deux méthodes du délégué de l’application en fonction du contexte :

Les méthodes du délégué ne seront déclénchées que si l’utilisateur touche le bouton d’action / message de la notification et non pas le bouton de fermeture / annulation.

  1. application:didFinishLaunchingWithOptions :
    Cette méthode est appelée si l’application n’est pas encore lancée. L’application sera ensuite lancée et la notification sera disponible dans le dictionnaire « launchOptions ».
  2. application:didReceiveRemoteNotification :
    Cette méthode est appelée si l’application est déjà lancée et est en cours d’utilisation ou si elle est en arrière-plan.

Le marquage de la notification se fait donc dans le corps de ces méthodes.

 

Exemples de marquage

  • Pour mesurer une notification qui a été reçue quand l’application n’a pas encore été lancée, en considérant que la notification contient une référence à la campagne (dans la clé ‘xto’)

    import UIKit
    import Tracker
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
    
        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
                if let campaign = notification["xto"] as? String {
                    ATInternet.sharedInstance.defaultTracker.campaigns.add(campaign)
                }
                ATInternet.sharedInstance.defaultTracker.screens.add("PushNotification").sendView()
            }
            return true
        }
    }
    #import "SmartTracker/SmartTracker-Swift.h"
    
    @interface AppDelegate ()
    
    @end
    
    @implementation AppDelegate
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (notification) {
            [ATInternet.sharedInstance.defaultTracker.campaigns add:[notification objectForKey:@"xto"]];
        }
        
        [[ATInternet.sharedInstance.defaultTracker.screens add:@"PushNotification"] sendView];
        
        return YES;
    }
    
    @end
  • Pour mesurer une notification si l’application est en cours d’utilisation ou en arrière-plan, en considérant que la notification contient une référence à la campagne (dans la clé ‘xto’)

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
        if let notification = userInfo[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
            if let campaign = notification["xto"] as? String {
                ATInternet.sharedInstance.defaultTracker.campaigns.add(campaign)
            }
            ATInternet.sharedInstance.defaultTracker.screens.add("PushNotification").sendView()
        }
    }
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
        if ([userInfo objectForKey:@"xto"]) {
            [ATInternet.sharedInstance.defaultTracker.campaigns add:[userInfo objectForKey:@"xto"]];
        }
        [[ATInternet.sharedInstance.defaultTracker.screens add:@"PushNotification"] sendView];
    }