DataLayer

classe pública DataLayer

A camada de dados é um mapa que contém informações genéricas sobre o aplicativo. Ele usa um conjunto padrão de chaves para que possa ser lido por qualquer parte que entenda a especificação. O estado da camada de dados é atualizado pela API. Por exemplo, um app pode começar com o seguinte dataLayer:

   {
     title: "Original screen title"
   }
Como o estado/os dados de um aplicativo podem mudar, ele pode atualizá-lo com uma chamada como:
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
Agora, a camada de dados contém:
   {
     title: "New screen title"
   }
Após outro push:
 dataLayer.push(DataLayer.mapOf("xyz", 3));
O dataLayer contém:
   {
     "title": "New screen title",
     "xyz": 3
   }
O exemplo a seguir demonstra como funciona a combinação de matrizes e mapas. Se o dataLayer original contiver:
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
Após o envio:
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
O dataLayer contém:
   {
     "items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
   }

Os envios acontecem de forma síncrona. Após o envio, as mudanças são refletidas no modelo.

Quando uma chave event é enviada para a camada de dados, as regras das tags são avaliadas e todas as tags correspondentes a esse evento são disparadas. Por exemplo, se um contêiner com uma tag cuja regra de disparo é "event" é igual a "openScreen", depois do envio:

 dataLayer.push("event", "openScreen");
essa tag será disparada.

Resumo dos campos

objeto público estático final OBJECT_NOT_PRESENT Os valores desse tipo usados em uma lista fazem com que ela seja esparsa durante a mesclagem. É como se não houvesse elementos nesse índice.

Resumo do método público

Objeto
get(String key)
estático List<Object>
listOf(Objeto... objetos)
estático Map<Object, Object>
mapOf(Objeto... objetos)
void
push(Map<Object, Object> update)
void
push(chave do objeto, valor do objeto)

Campos

público estático final Objeto OBJECT_NOT_PRESENT

Os valores desse tipo usados em uma lista fazem com que ela seja esparsa durante a mesclagem. É como se não houvesse elementos nesse índice.

Métodos públicos

public Objeto get (String key)

Retorna o objeto no modelo associado à chave especificada. Se a chave não for encontrada, null será retornado.

A chave pode ter pontos incorporados. Por exemplo: uma chave de "a.b.c" retorna um mapa com a chave "c" em um mapa com a chave "b" em um mapa com a chave "a" no modelo.

público estático List<Object> listOf (Objeto... objetos)

Método utilitário que cria uma lista.

Por exemplo, o código a seguir cria uma lista que contém "object1" e "object2":

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

public estático Map<Object, Object> mapOf (objeto... objetos)

Método utilitário que cria um mapa. Os parâmetros precisam ser pares de chave-valor.

Por exemplo, o código a seguir cria um mapeamento de mapa "key1" para "value1" e "key2" para "value2":

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

Gera
IllegalArgumentException se houver um número ímpar de parâmetros

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

Mescla o objeto update especificado no modelo de dados atual, chamando qualquer listener com a atualização (após ocorrer a mesclagem).

Se você quiser representar um valor ausente (como um índice vazio em uma lista), use o objeto OBJECT_NOT_PRESENT.

Se outra linha de execução estiver executando um push, essa chamada será bloqueada até que ela seja concluída.

Essa normalmente é uma chamada síncrona. No entanto, se, enquanto a linha de execução estiver executando o push, ocorrer outro push da mesma linha de execução, então esse segundo push será assíncrono (o segundo push retornará antes que as alterações tenham sido feitas na camada de dados). Esse segundo envio da mesma linha de execução poderá ocorrer, por exemplo, se um push da camada de dados for feito em resposta a um disparo de tag.

Se update contiver a chave event, as regras serão avaliadas e as tags correspondentes serão disparadas.

Parâmetros
update o objeto de atualização a ser processado

public void push (Chave do objeto, Valor do objeto)

Envia um par de dados de chave-valor para a camada de dados. Esse é apenas um método de conveniência que chama push(DataLayer.mapOf(key, value)).