Datenschicht

öffentliche Klasse DataLayer

Die Datenschicht ist eine Karte mit allgemeinen Informationen zur App. Dabei wird ein Standardsatz von Schlüsseln verwendet, damit er von jeder Partei gelesen werden kann, die die Spezifikation versteht. Der Status der Datenschicht wird über die zugehörige API aktualisiert. Eine App kann beispielsweise mit folgendem dataLayer-Objekt beginnen:

   {
     title: "Original screen title"
   }
Da sich der Status und die Daten einer App ändern können, kann die App das dataLayer-Objekt mit einem Aufruf aktualisieren:
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
Die Datenschicht enthält jetzt Folgendes:
   {
     title: "New screen title"
   }
Nach einer weiteren Übertragung:
 dataLayer.push(DataLayer.mapOf("xyz", 3));
Das dataLayer-Objekt enthält Folgendes:
   {
     "title": "New screen title",
     "xyz": 3
   }
Im folgenden Beispiel wird die Zusammenführung von Arrays und Karten veranschaulicht. Wenn das ursprüngliche dataLayer-Objekt Folgendes enthält:
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
Nach der Übertragung gilt Folgendes:
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
Das dataLayer-Objekt enthält Folgendes:
   {
     "items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
   }

Übertragungen erfolgen synchron. Nach der Übertragung wurden Änderungen im Modell widergespiegelt.

Wenn ein event-Schlüssel an die Datenschicht gesendet wird, werden die Regeln für Tags ausgewertet und alle Tags, die mit diesem Ereignis übereinstimmen, ausgelöst. Beispiel: Bei einem Container mit einem Tag, dessen Auslösungsregel lautet, dass „event“ gleich „openScreen“ ist, wird nach diesem Push Folgendes ausgelöst:

 dataLayer.push("event", "openScreen");
dieses Tag wird ausgelöst.

Feldzusammenfassung

public static final Object OBJECT_NOT_PRESENT Werte dieses Typs, die in einer Liste verwendet werden, führen dazu, dass die Liste beim Zusammenführen dünnbesetzt ist. Es ist so, als gäbe es bei diesem Index kein Element.

Public Method Summary

Objekt
get(String-Schlüssel)
static List<Object>
listOf(Objekt... Objekte)
static Map<Object, Object>
mapOf(Objekt... Objekte)
void
push(Map<Object, Object> update)
void
push(Objekt-Schlüssel, Objekt-Wert)

Felder

public static final Objekt OBJECT_NOT_PRESENT

Werte dieses Typs, die in einer Liste verwendet werden, führen dazu, dass die Liste beim Zusammenführen dünnbesetzt ist. Es ist so, als gäbe es bei diesem Index kein Element.

Public Methods

public Objekt get (String-Schlüssel)

Gibt das Objekt im Modell zurück, das dem angegebenen Schlüssel zugeordnet ist. Wenn der Schlüssel nicht gefunden wird, wird null zurückgegeben.

Der Schlüssel kann eingebettete Punkte enthalten. Beispiel: Der Schlüssel "a.b.c" gibt eine Zuordnung mit dem Schlüssel "c" in einer Map mit dem Schlüssel "b" in einer Map mit dem Schlüssel "a" im Modell zurück.

public static List<Object> listOf (Objekt... Objekte)

Entspricht einer Dienstprogrammmethode, die eine Liste erstellt.

Mit dem folgenden Befehl wird beispielsweise eine Liste erstellt, die "object1" und "object2" enthält:

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

public static Map<Object, Object> mapOf (Object... Objects)

Entspricht einer Dienstprogrammmethode zum Erstellen einer Karte. Die Parameter sollten Paare von Schlüssel/Wert-Paaren sein.

Mit dem folgenden Code wird beispielsweise eine Karte erstellt, die "key1" zu "value1" und "key2" zu "value2" zuordnet:

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

Löst aus
IllegalArgumentException wenn eine ungerade Anzahl von Parametern vorhanden ist.

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

Führt das angegebene update-Objekt mit dem vorhandenen Datenmodell zusammen und ruft nach der Zusammenführung alle Listener mit dem Update auf.

Wenn Sie einen fehlenden Wert darstellen möchten (z. B. einen leeren Index in einer Liste), verwenden Sie das Objekt OBJECT_NOT_PRESENT.

Führt ein anderer Thread einen Push aus, wird dieser Aufruf blockiert, bis der Thread beendet ist.

Dies ist normalerweise ein synchroner Aufruf. Wenn jedoch, während der Thread den Push-Vorgang ausführt, ein weiterer Push aus demselben Thread erfolgt, ist dieser zweite Push asynchron. Der zweite Push wird zurückgegeben, bevor Änderungen an der Datenschicht vorgenommen wurden. Der zweite Push aus demselben Thread kann beispielsweise erfolgen, wenn eine Datenschicht als Reaktion auf die Auslösung eines Tags gesendet wird.

Wenn update den Schlüssel event enthält, werden die Regeln ausgewertet und übereinstimmende Tags ausgelöst.

Parameter
update das zu verarbeitende Objekt

public void push (Objekt-Schlüssel, Objekt-Wert)

Ein Schlüssel/Wert-Paar wird an die Datenschicht gesendet. Dies ist nur eine unkomplizierte Methode, mit der push(DataLayer.mapOf(key, value)) aufgerufen wird.