Warstwa danych

klasa publiczna DataLayer

Warstwa danych to mapa zawierająca ogólne informacje o aplikacji. Używa w nim standardowego zestawu kluczy, dzięki czemu może być odczytany przez każdą osobę, która rozumie specyfikację. Stan warstwy danych jest aktualizowany przy użyciu interfejsu API. Na przykład aplikacja może zaczynać się od takiego obiektu dataLayer:

   {
     title: "Original screen title"
   }
Ze względu na możliwość zmiany stanu/danych aplikacji aplikacja może zaktualizować dataLayer za pomocą wywołania takiego jak:
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
Warstwa danych zawiera:
   {
     title: "New screen title"
   }
Po ponownym przekazaniu danych:
 dataLayer.push(DataLayer.mapOf("xyz", 3));
Obiekt dataLayer zawiera:
   {
     "title": "New screen title",
     "xyz": 3
   }
Poniższy przykład pokazuje, jak działa scalanie tablicy i map. Jeśli pierwotna dataLayer zawiera:
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
Po przekazaniu danych:
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
dataLayer zawiera:
   {
     "items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
   }

Przeniesienia są wykonywane synchronicznie; po przekazaniu zmiany są odzwierciedlane w modelu.

Po przekazaniu klucza event do warstwy danych oceniane są reguły tagów i uruchamiane są wszystkie tagi pasujące do tego zdarzenia. Na przykład w kontenerze z tagiem, którego reguła uruchamiania jest taka, że „zdarzenie” jest równe „openScreen”, po przekazaniu:

 dataLayer.push("event", "openScreen");
ten tag zostanie uruchomiony.

Podsumowanie pola

publiczny statyczny obiekt końcowy OBJECT_NOT_PRESENT Wartości tego typu używane w liście powodują, że podczas scalania lista jest ułamana i działa tak, jakby w tym indeksie nie było żadnego elementu.

Podsumowanie metod publicznych

Obiekt
get(ciąg znaków klucz)
statyczna lista<obiekt>
listOf(obiekt... obiekty)
static Map<Object, Object>
mapOf(Obiekt... obiekty)
void
push(Map<Object, Object> update)
void
push(klucz obiektu, Wartość obiektu)

Pola

public static final Obiekt OBJECT_NOT_PRESENT

Wartości tego typu używane w liście powodują, że podczas scalania lista jest ułamana i działa tak, jakby w tym indeksie nie było żadnego elementu.

Metody publiczne

publiczny Obiekt pobierz (ciąg klucz)

Zwraca obiekt w modelu powiązanym z podanym kluczem. Jeśli klucz nie zostanie znaleziony, zwracana jest wartość null.

Klucz może zawierać kropki. Na przykład: klucz obiektu "a.b.c" zwraca mapę z kluczem "c" na mapie z kluczem "b" na mapie z kluczem "a" w modelu.

public static List<Object> listOf (Obiekt... obiekty)

Metoda praktyczna do tworzenia listy.

Na przykład ta lista tworzy listę zawierającą "object1" i "object2":

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

public static Map<Object, Object> mapOf (Obiekt... obiekty)

Metoda użytkowa, która pozwala utworzyć mapę. Parametry powinny mieć postać par klucz-wartość.

Poniższy przykład tworzy mapowanie mapy "key1" na "value1" i "key2" na "value2":

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

Rzuty
IllegalArgumentException jeśli występuje nieparzysta liczba parametrów:

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

Scala podany obiekt update z istniejącym modelem danych, wywołując wszystkie detektory z aktualizacją (po scaleniu).

Jeśli chcesz odzwierciedlić brakującą wartość (np. pusty indeks na liście), użyj obiektu OBJECT_NOT_PRESENT.

Jeśli inny wątek wykonuje operację push, to wywołanie jest blokowane do momentu zakończenia tego wątku.

Jest to zwykle wywołanie synchroniczne. Jeśli jednak podczas wykonywania push wątku następuje kolejne wypchnięcie z tego samego wątku, to drugie wypchnięcie jest asynchroniczne (drugie wywołanie wróci przed wprowadzeniem zmian w warstwie danych). Może to nastąpić z tego samego wątku, np. gdy zostanie wykonane wypchnięcie warstwy danych w odpowiedzi na uruchomienie tagu.

Jeśli update zawiera klucz event, reguły zostaną ocenione i uruchomią się pasujące tagi.

Parametry
aktualizować obiekt aktualizacji do przetworzenia

public void push (obiekt klucz, wartość obiektu)

Przekazuje parę klucz/wartość danych do warstwy danych. Jest to wygodna metoda, która wywołuje funkcję push(DataLayer.mapOf(key, value)).