Il livello dati è una mappa contenente informazioni generiche sull'applicazione. Utilizza un set standard di chiavi, in modo che possa essere letto da qualsiasi parte che comprenda 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" }Poiché lo stato/i dati di un'app possono cambiare, l'app può aggiornare il dataLayer con una chiamata come questo:
dataLayer.push(DataLayer.mapOf("title", "New screen title"));Ora il livello dati contiene:
{ title: "New screen title" }Dopo l'esecuzione di un altro push:
dataLayer.push(DataLayer.mapOf("xyz", 3));Il dataLayer contiene:
{ "title": "New screen title", "xyz": 3 }Il seguente esempio mostra come funziona l'unione di array e mappe. Se il dataLayer originale contiene:
{ "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}] }Dopo questo push:
dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT, DataLayer.mapOf("a", null)));Il dataLayer contiene:
{ "items": [null, "item6", "item2", {"a": null, "b": "bValue"}] }
I push vengono eseguiti in modo sincrono; dopo il push, le modifiche si sono applicate al modello.
Quando viene inviata una chiave event
al livello dati, le regole per i tag vengono valutate e tutti i tag corrispondenti a questo evento vengono attivati.
Ad esempio, nel caso di un contenitore con un tag la cui regola di attivazione è che "event" è uguale a "openScreen", dopo questo push:
dataLayer.push("event", "openScreen");il tag si attiverà.
Riepilogo campo
pubblico statico finale Oggetto | OBJECT_NOT_PRESENT | Valori di questo tipo utilizzati in un elenco fanno sì che l'elenco sia sparso durante l'unione; è come se non ci fosse alcun elemento in quell'indice. |
Riepilogo del metodo pubblico
Oggetto |
get(stringa chiave)
|
statico List<Object> |
listOf(Oggetto... oggetti)
|
statico Map<Object, Object> |
mapOf(Oggetto... oggetti)
|
void |
push(Map<Object, Object> update)
|
void |
Campi
pubblico statico finale Oggetto OBJECT_NOT_PRESENT
Valori di questo tipo utilizzati in un elenco fanno sì che l'elenco sia sparso durante l'unione; è come se non ci fosse alcun elemento in quell'indice.
Metodi pubblici
pubblica Oggetto get (Chiave stringa)
Restituisce l'oggetto del modello associato alla chiave specificata. Se la chiave non viene trovata, viene restituito null
.
La chiave può contenere 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.
pubblico statico List<Object> listOf (Oggetto... oggetti)
Metodo di utilità che crea un elenco.
Ad esempio, quanto segue crea un elenco contenente "object1"
e
"object2"
:
List<Object> list = DataLayer.listOf("object1", "object2");
pubblico statico Map<Object, Object> mapOf (Object... objects)
Metodo di utilità che crea una mappa. I parametri devono essere coppie di valori chiave.
Ad esempio, quanto segue crea una mappatura della mappa da "key1"
a "value1"
e da "key2"
a "value2"
:
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
Tiri
IllegalArgumentException | se ci sono un numero dispari di parametri |
Public void push (Map<Object, Object> update)
Unisce l'oggetto update
specificato al modello dei dati esistente, chiamando eventuali 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 sta eseguendo un push, questa chiamata si blocca fino al completamento del thread.
Di solito si tratta di una chiamata sincrona. Tuttavia, se, mentre il thread esegue il push, viene eseguito un altro push dallo stesso thread, il secondo push è asincrono (il secondo push restituirà prima che siano state apportate modifiche al livello dati). Questo secondo push dallo stesso thread può verificarsi, ad esempio, se viene eseguito un push del livello dati in risposta all'attivazione di un tag.
Se update
contiene la chiave event
, verranno valutate le regole e
verranno attivati i tag corrispondenti.
Parametri
update | l'oggetto Update da elaborare |
Public void push (Chiave dell'oggetto, Valore valore dell'oggetto)
Invia una coppia chiave/valore di dati al livello dati. Questo è solo un metodo di convenienza che chiama push(DataLayer.mapOf(key, value))
.