Hits hors connexion

  • iOS
  • watchOS
  • tvOS
 

Avant-propos

Le SDK AT Internet vous permet de sauvegarder sur l’appareil de l’utilisateur les hits qui n’ont pu être envoyés suite à la perte de connexion Internet. Le SDK utilise pour cela, la technologie CoreData d’Apple.

L’utilisation de cette fonctionnalité est soumise à la souscription d’une option. Cette fonctionnalité est susceptible d’augmenter l’espace disque utilisé par votre application sur l’appareil de l’utilisateur.

 

Configuration du mode de stockage

Le mode de gestion du stockage est directement configurable depuis l’interface Tag Composer ou via la méthode setConfig du Tracker

Trois modes sont disponibles :

  • required  : Les hits ne sont stockés que lorsqu’une perte de connexion est détectée.
  • always : Les hits ne sont jamais envoyés. Ils sont directement stockés sur l’appareil.
  • never (par défaut) : Les hits ne sont jamais stockés. Si une perte de connexion est détectée en même temps que la tentative d’envoi d’un hit, celui-ci sera perdu.

Pour modifier le mode de stockage des hits, ajouter le code suivant à l’endroit souhaité :

Sauvegarder les hits lors de la perte de connexion :

tracker.setOfflineMode(OfflineModeKey.required, completionHandler: nil) // Notice that the function is async
[self.tracker setConfig:@"storage" value:@"required" completionHandler:nil];

Toujours sauvegarder les hits :

tracker.setOfflineMode(OfflineModeKey.always, completionHandler: nil)
[self.tracker setConfig:@"storage" value:@"always" completionHandler:nil];

Ne jamais sauvegarder les hits :

tracker.setOfflineMode(OfflineModeKey.never, completionHandler: nil)
[self.tracker setConfig:@"storage" value:@"never" completionHandler:nil];
 

Envoi des hits sauvegardés

Vous pouvez à tout moment (si une connexion Internet est établie), demander l’envoi des hits stockés.

Pour cela, le Tracker expose une propriété offline proposant une méthode send :

self.tracker.offline.dispatch()
[self.tracker.offline dispatch];

Cette méthode envoie de manière asynchrone l’ensemble des hits stockés et les supprime si l’envoi a réussi. Si l’envoi d’un hit a échoué, deux nouvelles tentatives seront effectuées lors du prochain envoi de hit. Si toutes les tentatives ont échoué, le hit sera supprimé du stockage.

Vous pouvez grâce à cette méthode, décider du moment d’envoi de vos hits. En configurant le mode de stockage à always il vous suffira ensuite d’appeler la méthode send pour déclencher l’envoi au moment souhaité.

 

Envoi des hits en arrière-plan

Vous pouvez déclencher l’envoi des hits sauvegardés lors de la mise en arrière-plan de votre application. Pour cela, ajouter le code suivant dans votre délégué d’application :

func applicationDidEnterBackground(_ application: UIApplication) {
    ATInternet.sharedInstance.defaultTracker.offline.dispatch()
}
- (void)applicationDidEnterBackground:(UIApplication *)application {    
    [[[ATInternet sharedInstance] defaultTracker].offline dispatch];
}

Apple autorise à effectuer des actions pendant 3 minutes suite à la mise en arrière-plan d’une application. Si la configuration enableBackgroundTask est définie à true, le SDK va alors créer une BackgroundTask qui se chargera de l’envoi des hits.

 

Récupération des hits

 

Listing

Vous pouvez à tout moment récupérer la liste des hits sauvegardés. Pour cela, la méthode get de la classe Offline est mise à disposition dans le Tracker.

var hits: [Hit] = ATInternet.sharedInstance.defaultTracker.offline.get()
NSArray *hits = [[[ATInternet sharedInstance] defaultTracker].offline get];

Cette méthode retourne un tableau d’objet Hit. Cet objet possède les propriétés suivantes :

  • url : URL du hit
  • creationDate : date de création du hit
  • retryCount : nombre d’essai d’envoi du hit
  • isOffline : indique que le hit provient du stockage
  • type : type de hit (e.g. Screen, Touch …)
 

Premier hit sauvegardé

Vous pouvez récupérer le premier hit sauvegardé via la méthode oldest de la classe Offline:

let hit: Hit? = ATInternet.sharedInstance.defaultTracker.offline.oldest()
ATHit *hit = [[[ATInternet sharedInstance] defaultTracker].offline oldest];
 

Dernier hit sauvegardé

Vous pouvez récupérer le dernier hit sauvegardé via la méthode latest de la classe Offline:

let hit: Hit? = ATInternet.sharedInstance.defaultTracker.offline.latest()
Hit *hit = [[[ATInternet sharedInstance] defaultTracker].offline latest];
 

Comptage

Vous pouvez à tout moment obtenir le nombre de hits stockés en base de données. Pour cela, la classe Offline expose une méthode  count :

let nbHit: Int = ATInternet.sharedInstance.defaultTracker.offline.count()
int nbHit = [[[ATInternet sharedInstance] defaultTracker].offline count];
 

Suppression des hits

Vous pouvez supprimer manuellement les hits stockés grâce aux 3 méthodes statiques suivantes :

  1. delete : Supprime tous les hits stockés

    let nbDeletedHits: Int = ATInternet.sharedInstance.defaultTracker.offline.delete()
    int nbDeletedHits = [[[ATInternet sharedInstance] defaultTracker].offline delete];
  2. delete(olderThan: Int) : Supprime les hits plus vieux que le nombre de jours indiqués

    let nbDeletedHits: Int = ATInternet.sharedInstance.defaultTracker.offline.delete(2)
    int nbDeletedHits = [[[ATInternet sharedInstance] defaultTracker].offline deleteOlderThanInt:2];
  3. delete(olderThan: Date) : Supprime les hits plus vieux que la date passée en paramètre

    let nbDeletedHits: Int = ATInternet.sharedInstance.defaultTracker.offline.delete(Date())

    NSInteger nbDeletedHits = [[[ATInternet sharedInstance] defaultTracker].offline deleteOlderThanDate:[NSDate date]];
Dernière mise à jour : 11/04/2017