Utilisation du dispatch() (SDKs)

 

Avant-propos

Cet article explique le fonctionnement détaillé de la méthode dispatch uniquement pour les SDK mobiles.

 

Explications

 

Qu’est-ce que le dispatch ?

Le dispatch est une fonction implémentée dans les SDK qui permet d’envoyer toutes les données de marquage en une seule fois, à l’inverse, par exemple, du sendView pour les écrans ou du sendTouch pour les gestes, qui n’envoient que les données propres à leur type. Cependant, l’utilisation du dispatch requiert quelques informations afin de ne pas avoir de hits problématiques.

 

Comment l’utiliser ?

Pour bien utiliser cette méthode, il est nécessaire de comprendre le système d’ajout des données de marquage.

Ce système repose sur la chronologie d’exécution du code. En effet, lors de l’implémentation du marquage de votre application, des objets seront ajoutés au fur et à mesure de l’exécution du code :

// Adding Custom Var
tracker.CustomVars().add(1, "value", CustomVar.CustomVarType.App);
        
// Adding Custom Object
tracker.CustomObjects().add("{\"key\":\"value\"}");
        
// Adding Aisle
tracker.Aisles().add("level1");

// Dispatch
tracker.dispatch();

Dans cet exemple, tous les objets ajoutés sont liés au même type de marquage, il n’y aura donc qu’un seul hit envoyé contenant tout.

Cependant, si on ajoute un Geste :

// Adding Custom Var
tracker.CustomVars().add(1, "value", CustomVar.CustomVarType.App);

// Adding Custom Object
tracker.CustomObjects().add("{\"key\":\"value\"}");

// Adding Gesture
tracker.Gestures().add("gesture");

// Adding Aisle
tracker.Aisles().add("level1");

// Dispatch
tracker.dispatch();

Si ce code est exécuté, deux hits seront envoyés dans cet ordre :

  1. Un premier contenant Gesture et CustomObject
  2. Un second contenant CustomVar et Aisle

dispatch-process

Pourquoi ? Car certains objets sont des objets d’agréments et les autres des objets finaux.

Les objets d’agréments sont utilisés pour enrichir les données et les objets finaux vont déclencher l’envoi d’un hit contenant toutes les informations compatibles avec son type au moment de son exécution.

En reprenant l’exemple précédent :

tracker.CustomVars().add(1, "value", CustomVar.CustomVarType.App); // -> Object compatible with Screen

// Adding Custom Object
tracker.CustomObjects().add("{\"key\":\"value\"}"); // -> Object compatible with all types

// Adding Gesture
tracker.Gestures().add("gesture"); // "Final" object : Sending hit which contains compatible data with Gesture

// Adding Aisle
tracker.Aisles().add("level1"); // Object compatible with Screen

// Dispatch
tracker.dispatch(); // If no other final object was added before, sending all objects added
  1. Ajout d’un objet CustomVar, agrémentant un Screen
  2. Ajout d’un objet CustomObject, agrémentant n’importe quel hit
  3. Ajout d’un objet « final » Gesture -> Envoi d’un hit contenant toutes les informations compatibles avec un Gesture, en l’occurence à ce niveau d’exécution du code, seul le CustomObject ajouté est compatible
  4. Ajout d’un objet Aisle, agrémentant un Screen
  5. Appel au dispatch : si aucun objet « final » n’est ajouté avant son exécution, tous les objets ajoutés précédemment vont être envoyés en respectant leur compatibilité.
 

Tableau récapitulatif

Objets « finaux »Objets d’agréments compatibles
Défaut/Screen
  • CustomObject (NuggAd,TvTracking)
  • IdentifiedVisitor
  • Publisher
  • SelfPromotion
  • Location
  • CustomVar
  • Order
  • Cart
  • Aisle
  • Campaign
  • InternalSearch
  • DynamicScreen
  • CustomTreeStructure
Gesture
  • CustomObject (NuggAd,TvTracking)
  • IdentifiedVisitor
  • InternalSearch
Publisher, SelfPromotion
  • CustomObject (NuggAd,TvTracking)
  • Publisher
  • SelfPromotion
Product
  • CustomObject (NuggAd,TvTracking)
  • Product
Dernière mise à jour : 19/02/2019