Il livello dati è una mappa che contiene informazioni generiche sull'applicazione. Utilizza un set di chiavi standard in modo che possa essere letto da qualsiasi parte che comprende la specifica. Lo stato del livello dati viene aggiornato tramite la relativa API. Ad esempio, un'app potrebbe iniziare con il seguente dataLayer:
{
title: "Original screen title"
}
dataLayer.push(DataLayer.mapOf("title", "New screen title"));
{
title: "New screen title"
}
dataLayer.push(DataLayer.mapOf("xyz", 3));
{
"title": "New screen title",
"xyz": 3
}
{
"items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
}
dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
DataLayer.mapOf("a", null)));
{
"items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
}
I push avvengono in modo sincrono; dopo il push, le modifiche si riflettono nel modello.
Quando una chiave event viene inviata al livello dati, vengono valutate le regole per i tag ed eventuali
verranno attivati i tag corrispondenti a questo evento.
Ad esempio, un container con un tag la cui regola di attivazione è "evento" è pari a
"openScreen", dopo questo push:
dataLayer.push("event", "openScreen");
Riepilogo dei campi
| pubblica statico finale Oggetto | OBJECT_NOT_PRESENT | I valori di questo tipo utilizzati in un elenco fanno sì che l'elenco sia sparso durante l'unione; è come se non c'erano elementi in quell'indice. |
Riepilogo del metodo pubblico
| Oggetto |
get(Chiave della stringa)
|
| statico Elenco<oggetto> |
listOf(Oggetto... oggetti)
|
| statico Mappa<Oggetto, Oggetto> |
mapOf(Oggetto... oggetti)
|
| null |
push(Map<Object, Object> update)
|
| null |
Campi
pubblica statico finale Oggetto . OBJECT_NOT_PRESENT
I valori di questo tipo utilizzati in un elenco fanno sì che l'elenco sia sparso durante l'unione; è come se non c'erano elementi in quell'indice.
Metodi pubblici
pubblica Oggetto . get (Chiave stringa)
Restituisce l'oggetto nel modello associato alla chiave specificata. Se la chiave non viene trovata,
Viene restituito null.
La chiave può avere punti incorporati. Ad esempio:
Una chiave di "a.b.c" restituisce una mappa con chiave "c" in una mappa
con chiave "b" in una mappa con chiave "a" nel modello.
pubblica statico Elenco<oggetto> . listOf (oggetto... oggetti)
Metodo di utilità che crea un elenco.
Ad esempio, di seguito viene creato un elenco contenente "object1" e
"object2":
List<Object> list = DataLayer.listOf("object1", "object2");
pubblica statico Mappa<Oggetto, Oggetto> . mapOf (oggetto... oggetti)
Metodo di utilità che crea una mappa. I parametri devono essere coppie di chiavi e i relativi valori.
Ad esempio, di seguito viene creata una mappa che mappa "key1" a "value1"
e da "key2" a "value2":
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
Lanci
| IllegalArgumentException | se è presente un numero dispari di parametri |
pubblica null . push (Mappa<oggetto, oggetto> aggiornamento)
Unisce l'oggetto update specificato nel modello dei dati esistente, richiamando
tutti i listener con l'aggiornamento (dopo l'unione).
Se vuoi rappresentare un valore mancante (come un indice vuoto in un elenco),
utilizza l'oggetto OBJECT_NOT_PRESENT.
Se un altro thread esegue un push, questa chiamata si blocca finché il thread non viene completato.
In genere si tratta di una chiamata sincrona. Tuttavia, se il thread è in esecuzione il push, un altro push avviene dallo stesso thread, il secondo push è asincrono. (il secondo push tornerà indietro prima che siano state apportate modifiche al livello dati). Questo secondo può verificarsi il push dallo stesso thread, ad esempio se viene eseguito un push del livello dati in risposta. all'attivazione di un tag.
Se update contiene la chiave event, le regole verranno valutate e
i tag corrispondenti verranno attivati.
Parametri
| update | l'oggetto update per elaborare |
pubblica null . push (Chiave dell'oggetto, Valore dell'oggetto)
Invia una coppia chiave/valore di dati al livello dati. Questo è solo un metodo pratico
che chiama push(DataLayer.mapOf(key, value)).