Couche de données

classe publique DataLayer

La couche de données est une carte contenant des informations génériques sur l'application. Il utilise un ensemble standard de clés afin qu'il puisse être lu par toute partie qui comprend la spécification. L'état de la couche de données est mis à jour via son API. Par exemple, une application peut commencer avec l'objet dataLayer suivant :

   {
     title: "Original screen title"
   }
Étant donné que l'état ou les données d'une application peuvent changer, elle peut mettre à jour la couche de données avec un appel du type :
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
La couche de données contient alors :
   {
     title: "New screen title"
   }
Après un autre transfert :
 dataLayer.push(DataLayer.mapOf("xyz", 3));
La couche de données contient :
   {
     "title": "New screen title",
     "xyz": 3
   }
L'exemple suivant illustre le fonctionnement de la fusion de tableaux et de cartes. Si la couche de données d'origine contient :
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
Après le transfert :
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
La couche de données contient :
   {
     "items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
   }

Les transferts se font de manière synchrone. Après le transfert, les modifications sont répercutées dans le modèle.

Lorsqu'une clé event est transmise à la couche de données, les règles des balises sont évaluées et toutes les balises correspondant à cet événement se déclenchent. Prenons l'exemple d'un conteneur avec une balise dont la règle de déclenchement est que "événement" est égal à "openScreen", après ce transfert :

 dataLayer.push("event", "openScreen");
cette balise se déclenchera.

Récapitulatif sur les champs

objet final statique public OBJECT_NOT_PRESENT Lorsque les valeurs de ce type sont utilisées dans une liste, celle-ci est dispersée lors de la fusion. C'est comme s'il n'y avait aucun élément à cet index.

Récapitulatif des méthodes publiques

Objet
get(Chaîne key)
statique List<Object>
listOf(Objet... objets)
statique Map<Object, Object>
mapOf(Objet... objets)
void
push(Map<Object, Object> update)
void
push(clé de l'objet, valeur de l'objet)

Champs

objet final statique public Objet OBJECT_NOT_PRESENT

Lorsque les valeurs de ce type sont utilisées dans une liste, celle-ci est dispersée lors de la fusion. C'est comme s'il n'y avait aucun élément à cet index.

Méthodes publiques

public Objet get (Chaîne key)

Renvoie l'objet du modèle associé à la clé donnée. Si la clé est introuvable, null est renvoyé.

La clé peut inclure des points. Par exemple : une clé de "a.b.c" renvoie une map avec la clé "c" dans une map avec la clé "b" dans une map avec la clé "a" dans le modèle.

public statique List<Object> listOf (Object... objects)

Méthode utilitaire qui crée une liste.

Par exemple, la requête suivante crée une liste contenant "object1" et "object2" :

   List<Object> list = DataLayer.listOf("object1", "object2");
 

public statique Map<Object, Object> mapOf (Object... objects)

Méthode utilitaire qui crée une carte. Les paramètres doivent être des paires de clés-valeurs.

Par exemple, le code suivant crée une carte mappant "key1" à "value1" et "key2" à "value2" :

   Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
 

Génère
IllegalArgumentException en cas de nombre impair de paramètres

public vide push (Map<Object, Object> update)

Fusionne l'objet update donné dans le modèle de données existant, en appelant tous les écouteurs avec la mise à jour (après la fusion).

Si vous souhaitez représenter une valeur manquante (comme un index vide dans une liste), utilisez l'objet OBJECT_NOT_PRESENT.

Si un autre thread exécute une opération push, cet appel est bloqué jusqu'à ce que ce thread soit terminé.

Il s'agit généralement d'un appel synchrone. Toutefois, si, pendant que le thread exécute le transfert, une autre transmission se produit à partir du même thread, cette deuxième transmission est asynchrone (la seconde push est renvoyée avant que des modifications n'aient été apportées à la couche de données). Cette seconde transmission à partir du même thread peut se produire, par exemple, si une transmission de la couche de données est effectuée en réponse au déclenchement d'une balise.

Si update contient la clé event, les règles seront évaluées et les balises correspondantes se déclencheront.

Paramètres
update l'objet "update" pour traiter

public vide push (clé de l'objet, valeur de l'objet)

Transfère une paire de données clé/valeur vers la couche de données. Il s'agit simplement d'une méthode pratique qui appelle push(DataLayer.mapOf(key, value)).