Слой данных

общедоступный класс DataLayer

Уровень данных — это карта, содержащая общую информацию о приложении. Он использует стандартный набор ключей, поэтому его может прочитать любой человек, понимающий спецификацию. Состояние уровня данных обновляется через API. Например, приложение может начинаться со следующего слоя данных:

   {
     title: "Original screen title"
   }
. Поскольку состояние/данные приложения могут меняться, приложение может обновлять слой данных с помощью такого вызова, как:
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
. Теперь уровень данных содержит:
   {
     title: "New screen title"
   }
После того, как произойдет еще одно нажатие:
 dataLayer.push(DataLayer.mapOf("xyz", 3));
DataLayer содержит:
   {
     "title": "New screen title",
     "xyz": 3
   }
В следующем примере показано, как работает слияние массива и карты. Если исходный dataLayer содержит:
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
После этого нажатия:
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
. DataLayer содержит:
   {
     "items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
   }

Толчки происходят синхронно; после нажатия изменения отразились в модели.

Когда ключ event передается на уровень данных, правила для тегов оцениваются, и все теги, соответствующие этому событию, активируются. Например, если у вас есть контейнер с тегом, правило срабатывания которого гласит, что «event» равно «openScreen», после нажатия

 dataLayer.push("event", "openScreen");
этот тег сработает.

Сводка полей

публичный статический конечный объект OBJECT_NOT_PRESENT Значения этого типа, используемые в списке, приводят к тому, что список становится разреженным при слиянии; как будто по этому индексу не было элемента.

Краткое описание общедоступного метода

Объект
получить ( строковый ключ )
статический список<Объект>
listOf ( Объект... объекты )
статическая карта<Объект, Объект>
mapOf ( Объект... объекты )
пустота
push ( обновление Map<Object, Object> )
пустота
push ( ключ объекта , значение объекта )

Поля

общедоступный статический конечный объект OBJECT_NOT_PRESENT

Значения этого типа, используемые в списке, приводят к тому, что список становится разреженным при слиянии; как будто по этому индексу не было элемента.

Публичные методы

получение публичного объекта ( строковый ключ )

Возвращает объект модели, связанный с данным ключом. Если ключ не найден, возвращается null .

Ключ может иметь встроенные точки. Например: ключ "abc" возвращает карту с ключом "c" в карте с ключом "b" в карте с ключом "a" в модели.

общедоступный статический List<Object> listOf ( Object... объекты )

Служебный метод, создающий список.

Например, следующая команда создает список, содержащий "object1" и "object2" :

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

общедоступная статическая Map<Object, Object> mapOf ( Object... объекты )

Служебный метод, создающий карту. Параметры должны быть парами ключевых значений.

Например, следующий код создает сопоставление "key1" с "value1" и "key2" с "value2" :

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

Броски
IllegalArgumentException если имеется нечетное количество параметров

public void push ( обновление Map<Object, Object> )

Объединяет данный объект update с существующей моделью данных, вызывая все прослушиватели с обновлением (после того, как произойдет слияние).

Если вы хотите представить отсутствующее значение (например, пустой индекс в списке), используйте объект OBJECT_NOT_PRESENT .

Если другой поток выполняет отправку, этот вызов блокируется до тех пор, пока этот поток не завершится.

Обычно это синхронный вызов. Однако если во время выполнения потока из того же потока произойдет еще одно нажатие, то это второе нажатие будет асинхронным (второе нажатие вернется до того, как на уровне данных будут внесены изменения). Это второе нажатие из того же потока может произойти, например, если нажатие уровня данных выполняется в ответ на активацию тега.

Если update содержит ключевое event , правила будут проверены и сработают соответствующие теги.

Параметры
обновлять объект обновления для обработки

public void push ( ключ объекта , значение объекта )

Передает пару данных «ключ/значение» на уровень данных. Это просто удобный метод, который вызывает push(DataLayer.mapOf(key, value)) .