DataLayer

clase pública DataLayer

La capa de datos es un mapa que contiene información genérica sobre la aplicación. Usa un conjunto estándar de claves para que pueda ser leído por cualquier parte que comprenda la especificación. El estado de la capa de datos se actualiza a través de su API. Por ejemplo, una app podría comenzar con el siguiente dataLayer:

   {
     title: "Original screen title"
   }
Como el estado o los datos de una app pueden cambiar, la app puede actualizar dataLayer con una llamada como la siguiente:
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
Ahora la capa de datos contiene lo siguiente:
   {
     title: "New screen title"
   }
Después de otro envío:
 dataLayer.push(DataLayer.mapOf("xyz", 3));
El dataLayer contiene lo siguiente:
   {
     "title": "New screen title",
     "xyz": 3
   }
En el siguiente ejemplo, se muestra cómo funciona la combinación de arrays y mapas. Si el objeto dataLayer original contiene lo siguiente:
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
Después de que se realice el envío:
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
El objeto dataLayer contiene lo siguiente:
   {
     "items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
   }

Los envíos ocurren de forma síncrona; después de ellos, los cambios se reflejan en el modelo.

Cuando se envía una clave event a la capa de datos, se evalúan las reglas para las etiquetas y se activan las que coincidan con este evento. Por ejemplo, dado un contenedor con una etiqueta cuya regla de activación es que "event" es igual a "openScreen", después de este envío:

 dataLayer.push("event", "openScreen");
, esa etiqueta se activará.

Resumen de campos

Objeto público estático final OBJECT_NOT_PRESENT Los valores de este tipo que se usan en una lista hacen que esta se disperse durante la combinación; es como si no hubiera ningún elemento en ese índice.

Resumen de métodos públicos

Objeto
get(Cadena clave)
estático List<Object>
listOf(Objeto... objetos)
estático Map<Object, Object>
mapOf(Objeto... objetos)
void
push(Map<Object, Object> update)
void
push(Objeto clave, objeto valor)

Campos

Objeto final estático público OBJECT_NOT_PRESENT

Los valores de este tipo que se usan en una lista hacen que esta se disperse durante la combinación; es como si no hubiera ningún elemento en ese índice.

Métodos públicos

Objeto público get (Clave de string)

Muestra el objeto en el modelo asociado con la clave determinada. Si no se encuentra la clave, se muestra null.

La clave puede tener puntos incorporados. Por ejemplo: una clave de "a.b.c" muestra un mapa con la clave "c" en un mapa con la clave "b" en un mapa con la clave "a" en el modelo.

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

Es un método de utilidad que crea una lista.

Por ejemplo, lo siguiente crea una lista que contiene "object1" y "object2":

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

Map<Object, Object> mapOf (Objeto... objetos)

Es el método de utilidad que crea un mapa. Los parámetros deben ser pares de valores clave.

Por ejemplo, en el siguiente ejemplo, se crea un mapa que asigna "key1" a "value1" y "key2" a "value2":

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

Arroja
IllegalArgumentException si hay un número impar de parámetros

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

Combina el objeto update determinado en el modelo de datos existente y llama a cualquier objeto de escucha con la actualización (después de la combinación).

Si deseas representar un valor faltante (como un índice vacío en una lista), usa el objeto OBJECT_NOT_PRESENT.

Si otro subproceso está ejecutando un envío, esta llamada se bloquea hasta que el subproceso finaliza.

Esta suele ser una llamada síncrona. Sin embargo, si mientras el subproceso está ejecutando el envío, otro envío ocurre desde el mismo subproceso, y ese segundo envío es asíncrono (el segundo envío se mostrará antes de que se realicen cambios en la capa de datos). Este segundo envío del mismo subproceso puede ocurrir, por ejemplo, si se realiza un envío de capa de datos en respuesta a la activación de una etiqueta.

Si update contiene la clave event, se evaluarán las reglas y se activarán las etiquetas coincidentes.

Parámetros
update el objeto de actualización para procesar

public void push (clave de objeto, valor de objeto)

Envía un par clave-valor de datos a la capa de datos. Este es solo un método de conveniencia que llama a push(DataLayer.mapOf(key, value)).