Esta es la implementación de Google Tag Manager (GTM) para dispositivos móviles. Ejemplo de uso:
Container container = TagManager.getInstance(context).openContainer(myContainerId); String value = container.getString("myKey"); DataLayer dataLayer = TagManager.getInstance(context).getDataLayer(); dataLayer.push(DataLayer.mapOf("event", "openScreen", "screenName", "Main Page"));Un contenedor es una colección de macros, etiquetas y reglas. Se crea dentro de la aplicación de GTM y se le asigna un ID de contenedor. Este ID de contenedor es el que se usa en esta API.
La clase Container
proporciona métodos para recuperar valores con una clave determinada.
Las rutinas getBoolean(String)
, getDouble(String)
, getLong(String)
y getString(String)
muestran el valor actual de la clave de una macro de recopilación de valores, según las reglas asociadas con el contenedor.
Por ejemplo, si tu contenedor tiene una macro de recopilación de valores con una clave speed
cuyo valor es 32, y la regla de habilitación es Language
es "en"; y otra macro de recopilación de valores con una clave speed
cuyo valor es 45, y la regla de habilitación es Language
no es "en", entonces la siguiente llamada:
container.getLong("speed")mostrará 32 si el idioma actual del dispositivo es el inglés, o bien 45 de lo contrario.
La capa de datos es un mapa que contiene información genérica sobre la aplicación.
La clase DataLayer
proporciona métodos para enviar y recuperar datos de la capa de datos.
Si envías una clave event
a la capa de datos, se activarán las etiquetas que coincidan con este evento.
Se incluye una versión inicial del contenedor con la aplicación. Debe colocarse como un recurso con el nombre tagmanager/containerId, en el que containerId es el mismo ID de contenedor que usarás en esta API. Cuando llames a openContainer(String, Container.Callback)
, el contenedor se mostrará con esas reglas o macros empaquetadas.
Crearás el contenedor en la IU y usarás el botón Descargar para descargarlo.
Puedes modificar el contenedor en la IU y publicar una versión nueva. En ese caso, la próxima vez que la app para dispositivos móviles actualice el contenedor desde la red (actualmente cada 12 horas), obtendrá esa versión nueva. Cuando llamas a una de las rutinas get..., el valor se calculará con las reglas más recientes.
El contenedor descargado se guarda de manera local. Cuando llamas a openContainer(String, Container.Callback)
, primero cargará el contenedor predeterminado y, luego, cargará de manera asíncrona cualquier contenedor guardado. Si no se encuentra
ninguno o si tiene más de 12 horas de antigüedad, se intentará recuperar una versión más reciente de la red.
Para encontrar el estado de esas cargas asíncronas, pasa un Container.Callback
a openContainer(String, Container.Callback)
.
En ocasiones, es posible que quieras bloquear hasta que haya un contenedor que no predeterminado esté disponible o hasta que haya un
contenedor nuevo disponible. ContainerOpener
es una clase de utilidad que puede ayudarte.
Cuando termines con un contenedor, llama a close()
.
Resumen de clases anidadas
Interfaz | TagManager.Logger | Una interfaz simple para el registro de errores, advertencias, información, depuración y detalles | |
enum | TagManager.RefreshMode | Modo para actualizar el contenedor. |
Resumen de métodos públicos
Contenedor |
getContainer(String containerId)
|
contexto | |
DataLayer | |
TagManager estático |
getInstance(contexto contexto)
|
Logger | |
TagManager.RefreshMode | |
Contenedor | |
void | |
void |
Métodos públicos
public Contenedor getContainer (String containerId)
Muestra el contenedor abierto asociado con el containerId
; muestra null
si el contenedor aún no está abierto.
public Context getContext ()
Muestra el contexto guardado asociado con este objeto.
public DataLayer getDataLayer ()
Muestra el objeto de capa de datos que utiliza el administrador de etiquetas.
público estático TagManager getInstance (Contexto contexto)
Obtén la instancia singleton de la clase TagManager
y créala si es necesario.
public TagManager.RefreshMode getRefreshMode ()
Muestra el modo de actualización que se usa para todos los contenedores.
public Container openContainer (String containerId, Container.Callback devolución de llamada)
Muestra un contenedor. Se llamará a la devolución de llamada a medida que ocurran varias situaciones para el contenedor. Como mínimo, openContainer intentará cargar una versión guardada del contenedor. Si no hay una versión guardada o si la versión guardada está desactualizada, se intentará cargar desde la red.
Por lo general, el contenedor mostrado estará vacío, pero la carga se realizará en un subproceso independiente, por lo que el contenedor mostrado se puede actualizar antes o después de mostrarse, o puede que nunca se actualice (por ejemplo, si no hay conexión de red durante la vida útil del contenedor).
Si llamas a openContainer
por segunda vez para un containerId
determinado, se generará una excepción.
Parámetros
containerId | el ID del contenedor que se abrirá |
callback | un objeto a cuyos diversos métodos se llamará durante partes del proceso de carga. Ten en cuenta que los métodos se pueden llamar desde diferentes subprocesos. Además, se los puede llamar antes de que se muestre openContainer .
|
public void setRefreshMode (TagManager.RefreshMode modo)
Establece el modo de actualización que se usa para todos los contenedores.