Warstwa danych to mapa z ogólnymi informacjami o aplikacji. Wykorzystuje standardowy zestaw kluczy, dzięki czemu może go odczytać każda osoba który rozumie specyfikację. Stan warstwy danych jest aktualizowany przez interfejs API. Aplikacja może na przykład zaczynać się od takiej tablicy 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"}]
}
Wypchnięcia następuje synchronicznie. po przesłaniu zmiany zostały odzwierciedlone w modelu.
Po przekazaniu klucza event do warstwy danych oceniane są reguły tagów i wszystkie
uruchomią się tagi pasujące do tego zdarzenia.
Przykład: dla kontenera z tagiem, którego regułą uruchamiania jest „zdarzenie” jest równe
„openScreen” po tym przekazaniu:
dataLayer.push("event", "openScreen");
Podsumowanie pola
| publiczne statyczny finał Obiekt | OBJECT_NOT_PRESENT | Wartości tego typu używane na liście powodują, że lista jest rozproszona podczas scalania. to tak, jakby w tym indeksie nie było żadnego elementu. |
Podsumowanie metody publicznej
| Obiekt |
get(ciąg klucz)
|
| statyczny Obiekt List<Object> |
listOf(Obiekt... obiekty)
|
| statyczny Mapa<Object, Object> |
mapOf(Obiekt... obiekty)
|
| nieważne |
push(Map<Object, Object> aktualizacja)
|
| nieważne |
Pola
publiczne statyczny finał Obiekt . OBJECT_NOT_PRESENT
Wartości tego typu używane na liście powodują, że lista jest rozproszona podczas scalania. to tak, jakby w tym indeksie nie było żadnego elementu.
Metody publiczne
publiczne Obiekt . pobierz (ciąg znaków klucz)
Zwraca obiekt w modelu powiązany z podanym kluczem. Jeśli klucz nie zostanie znaleziony,
Zwracana jest wartość null.
Klucz może zawierać kropki. Na przykład:
klucz "a.b.c" zwraca mapę z kluczem "c" na mapie
z kluczem "b" na mapie z kluczem "a" w modelu.
publiczne statyczny Obiekt List<Object> . listOf (Obiekt... obiekty)
Metoda tworzenia listy.
Poniższy przykład powoduje utworzenie listy zawierającej "object1" oraz
"object2":
List<Object> list = DataLayer.listOf("object1", "object2");
publiczne statyczny Mapa<Object, Object> . mapOf (Obiekt... obiekty)
Metoda tworzenia mapy. Parametry powinny być parami kluczy .
Poniższy przykład pozwala utworzyć mapowanie mapy "key1" na "value1"
i "key2" do "value2":
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
Rzuty
| IllegalArgumentException | jeśli liczba parametrów jest nieparzysta |
publiczne nieważne . push (Mapa<Object, Object> aktualizacja)
Scala dany obiekt update z istniejącym modelem danych, wywołując
wszystkich detektorów z aktualizacją (po scaleniu).
Jeśli chcesz przedstawić brakującą wartość (np. pusty indeks na liście),
użyj obiektu OBJECT_NOT_PRESENT.
Jeśli inny wątek wykonuje push, to wywołanie blokuje się do czasu, aż ten wątek .
Zazwyczaj jest to wywołanie synchroniczne. Jeśli jednak podczas wykonywania wątku wypchnięcie następuje po kolejnym wypchnięciu z tego samego wątku, po czym drugie wypchnięcie jest asynchroniczne. (drugie wypchnięcie powróci, zanim zmiany zostaną wprowadzone w warstwie danych). Sekunda może zostać wypchnięte z tego samego wątku. Jeśli na przykład w odpowiedzi następuje przekazanie warstwy danych do uruchomienia tagu.
Jeśli update zawiera klucz event, reguły zostaną ocenione i
pasujące tagi.
Parametry
| update | aktualizowany obiekt, który ma zostać przetworzony |
publiczne nieważne . push (klucz obiektu, wartość obiektu)
Przekazuje parę klucz-wartość danych do warstwy danych. Jest to jedynie udogodnienie
który dzwoni pod numer push(DataLayer.mapOf(key, value)).