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];

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];
}