Warstwa danych

klasa publiczna DataLayer

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"
   }
Gdy stan/dane aplikacji mogą się zmieniać, aplikacja może aktualizować dataLayer za pomocą takiego wywołania:
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
Teraz warstwa danych zawiera:
   {
     title: "New screen title"
   }
Po kolejnym wypychaniu:
 dataLayer.push(DataLayer.mapOf("xyz", 3));
Obiekt zawiera:
   {
     "title": "New screen title",
     "xyz": 3
   }
Poniższy przykład pokazuje, jak działa scalanie tablic i map. Jeśli oryginał dataLayer zawiera:
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
Po przekazaniu tej wiadomości:
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
Obiekt zawiera:
   {
     "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");
który zostanie uruchomiony.

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
push(klucz obiektu, wartość obiektu)

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)).