Introducción
Google Tag Manager permite que los desarrolladores cambien los valores de configuración en sus aplicaciones para dispositivos móviles con la interfaz de Google Tag Manager sin tener que volver a compilar y volver a enviar los objetos binarios de la aplicación a los mercados de aplicaciones.
Esto es útil para administrar cualquier valor o marca de configuración en tu aplicación que puedas necesitar a los cambios en el futuro, como
- Diversas opciones de configuración de la IU y cadenas de la pantalla
- Tamaños, ubicaciones o tipos de anuncios que se publican en tu aplicación
- Varios parámetros de configuración de juegos
Los valores de configuración también se pueden evaluar en el tiempo de ejecución usando reglas, lo que permite parámetros de configuración como los siguientes:
- Cómo usar el tamaño de la pantalla para determinar el tamaño del banner de anuncio
- Cómo usar el idioma y la ubicación para configurar los elementos de la IU
Google TagManager también permite la implementación dinámica de etiquetas y píxeles de seguimiento en aplicaciones. Los desarrolladores pueden enviar eventos importantes a una capa de datos y decidir, más tarde, cuáles los píxeles o las etiquetas de seguimiento deben activarse.
Antes de comenzar
Completa los siguientes pasos antes de comenzar esta guía de introducción:
- Instala el SDK de Android.
- Descarga el SDK de Servicios de Google Play.
- Crea una cuenta de Google Tag Manager.
- Configura un contenedor de Google Tag Manager
Una vez que hayas completado estos pasos, el resto de la guía te indicará cómo configurar y utilizar Google Tag Manager en tu aplicación para Android.
Comenzar
Después de seguir esta guía de introducción, comprenderás cómo hacer lo siguiente:
- Agrega Google Tag Manager a tu proyecto
- Inicializa Tag Manager en tu aplicación
- Obtén valores de configuración de un contenedor de Tag Manager
- Envía valores y eventos a
dataLayer
- Cómo obtener una vista previa de tu contenedor, depurarlo y publicarlo
En esta guía, se usan fragmentos de código de Cute Animals
aplicación de ejemplo que se incluye en el
SDK de Servicios de Google Play.
La fuente completa para este proyecto está disponible en: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
.
1. Cómo agregar Google Tag Manager a tu proyecto
Para agregar Google Tag Manager a tu proyecto, haz lo siguiente:
- Configura el SDK de Servicios de Google Play.
- Si usas un IDE distinto de
Android Studio, agrega los siguientes permisos a la
Archivo
AndroidManifest.xml
:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- Para habilitar
InstallReferrerReceiver
para llamar al receptor de Google Analytics Para configurar los datos de la campaña, agrega lo siguiente al ArchivoAndroidManifest.xml
:<!-- Used for install referrer tracking--> <service android:name="com.google.android.gms.tagmanager.InstallReferrerService" /> <receiver android:name="com.google.android.gms.tagmanager.InstallReferrerReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
2. Cómo agregar un archivo de contenedor predeterminado a tu proyecto
Google Tag Manager usa un contenedor predeterminado en la primera ejecución de tu aplicación. Predeterminado contenedor dejará de usarse tan pronto como la aplicación pueda recuperar un contenedor nuevo a través del en cada red.
Para descargar y agregar un objeto binario de contenedor predeterminado a tu aplicación, haz lo siguiente:
- Accede a la interfaz web de Google Tag Manager.
- Selecciona la Versión del contenedor que deseas descargar.
- Haz clic en el botón Descargar para recuperar el objeto binario del contenedor.
- Agrega el archivo binario del contenedor descargado a tu proyecto como recurso sin procesar.
- Si la subcarpeta
raw
en<project-root>/res/
no existe, créalo. - Cambia el nombre del archivo binario del contenedor si es necesario. Consta de solo letras minúsculas, dígitos y guiones bajos.
- Copia el archivo binario del contenedor en la carpeta.
<project-root>/res/raw
- Si la subcarpeta
Aunque se recomienda usar el archivo binario, si tu contenedor no contiene reglas ni etiquetas, puedes optar por usar un archivo JSON simple en su lugar.
3. Cómo inicializar Google Tag Manager
Para inicializar Google Tag Manager en tu aplicación, sigue estos pasos:
- Obtén el singleton
TagManager
:TagManager tagManager = TagManager.getInstance(this);
- Usa el singleton
TagManager
para realizar una solicitud de carga de un contenedor y especifica un ID del contenedor de Google Tag Manager y tu contenedor predeterminado . El ID del contenedor debe estar en mayúsculas y coincidir exactamente con el ID del contenedor en la etiqueta de Google. Interfaz web de administrador. La llamada aloadContainerPreferNonDefault()
no genera bloqueos. y devuelve unPendingResult
:PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(CONTAINER_ID, R.raw.defaultcontainer_binary);
- Usar un
ResultCallback
para mostrarContainerHolder
una vez que se terminó de cargar o se agotó el tiempo de espera:// The onResult method will be called as soon as one of the following happens: // 1. a saved container is loaded // 2. if there is no saved container, a network container is loaded // 3. the 2-second timeout occurs pending.setResultCallback(new ResultCallback<ContainerHolder>() { @Override public void onResult(ContainerHolder containerHolder) { ContainerHolderSingleton.setContainerHolder(containerHolder); Container container = containerHolder.getContainer(); if (!containerHolder.getStatus().isSuccess()) { Log.e("CuteAnimals", "failure loading container"); displayErrorToUser(R.string.load_error); return; } ContainerLoadedCallback.registerCallbacksForContainer(container); containerHolder.setContainerAvailableListener(new ContainerLoadedCallback()); startMainActivity(); } }, TIMEOUT_FOR_CONTAINER_OPEN_MILLISECONDS, TimeUnit.MILLISECONDS);
Cómo crear un singleton de ContainerHolder
Solo debes mantener una instancia de
ContainerHolder
por ejecución de tu y mantener la integridad de su aplicación. Por eso, el ejemplo anterior usa una clase de utilidadContainerHolderSingleton
. para administrar el acceso a la instanciaContainerHolder
. Esto es lo que La claseContainerHolderSingleton
tiene el siguiente aspecto:package com.google.android.tagmanager.examples.cuteanimals; import com.google.android.gms.tagmanager.ContainerHolder; /** * Singleton to hold the GTM Container (since it should be only created once * per run of the app). */ public class ContainerHolderSingleton { private static ContainerHolder containerHolder; /** * Utility class; don't instantiate. */ private ContainerHolderSingleton() { } public static ContainerHolder getContainerHolder() { return containerHolder; } public static void setContainerHolder(ContainerHolder c) { containerHolder = c; } }
4. Obtener valores de configuración del contenedor
Una vez cargado el contenedor, puedes recuperar los valores de configuración usando cualquiera de los
Container.get<type>()
. Los valores de configuración se definen
Variables de recopilación de valores de Google Tag Manager. Por ejemplo, el siguiente método
recupera el último color que decidimos usar para un elemento de la IU y lo muestra como
un número entero:
/** * Returns an integer representing a color. */ private int getColor(String key) { return colorFromColorName(containerHolder.getContainer().getString(key)); }
Este código realiza dos acciones para recuperar el nombre del color del contenedor:
- Obtiene el
Container
delContainerHolder
conContainerHolder.getContainer()
- Obtiene el valor del color con
Container.getString(key)
, donde tienes definió la clave y el valor en la interfaz web de Google Tag Manager.
5. Cómo enviar eventos y valores a dataLayer
Google Tag Manager también proporciona un elemento dataLayer
, al que puedes enviar información.
sobre tu aplicación que se puede leer en otras partes de ella o usarse para activar etiquetas
que configuraste en la interfaz web de Google Tag Manager.
Cómo enviar valores a dataLayer
dataLayer
proporciona una capa de persistencia que puedes usar.
para almacenar pares clave-valor que tal vez quieras usar en otras partes de tu aplicación.
como entradas a las etiquetas de Google Tag Manager.
Para enviar un valor a dataLayer
, sigue este patrón:
- Obtén la
singleton
DataLayer
:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Envía el evento mediante .
DataLayer.push()
// Put the image_name into the data layer for future use. TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);
Para obtener un valor de dataLayer
, usa
DataLayer.get(key)
Cómo enviar eventos a dataLayer
Enviar eventos a dataLayer
te permite separar el código de tu aplicación de
etiquetas que tal vez quiera activar
en respuesta a esos eventos.
Por ejemplo, en vez de codificar de forma fija las llamadas de seguimiento de las vistas de pantalla de Google Analytics en tu aplicación,
puedes enviar eventos de pantalla al dataLayer
y definir tus etiquetas de seguimiento mediante el
Interfaz web de Google Tag Manager. Esto te da la flexibilidad de modificar esa etiqueta o agregar
etiquetas adicionales que responden a los eventos de pantalla sin actualizar el código de la aplicación.
Para enviar un evento a dataLayer
, sigue este patrón:
- Obtén la
singleton
DataLayer
:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Envía el evento mediante .
DataLayer.pushEvent()
dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
DataLayer.mapOf()
es un método de utilidad que puedes usar para generar fácilmente un mapa de Son pares clave-valor que actualizarán el objetodataLayer
al mismo tiempo que se envíe el evento.
6. Cómo obtener una vista previa, depurar y publicar
Antes de publicar una versión del contenedor, te recomendamos obtener una vista previa para asegurarte de que funciona según lo previsto. Google Tag Manager te permite obtener una vista previa de las versiones de tus contenedores generando vínculos y códigos QR en la interfaz web, y usándolos para abrir tu aplicación. También puedes habilitar un modo de registro detallado para depurar cualquier comportamiento inesperado.
Obteniendo vista previa
Para obtener una vista previa de la versión de tu contenedor, sigue estos pasos:
- Agregando esta vista previa
Activity
a tu archivoAndroidManifest
:<!-- Add preview activity. --> <activity android:name="com.google.android.gms.tagmanager.PreviewActivity" android:label="@string/app_name" android:noHistory="true"> <!-- optional, removes the previewActivity from the activity stack. --> <intent-filter> <data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity>
Asegúrate de modificar esta línea para incluir el nombre del paquete de tu aplicación:
<data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
- Genera un vínculo de vista previa en la interfaz web de Google Tag Manager
- Accede a Google Tag Manager
- Selecciona la Versión del contenedor para obtener una vista previa
- Haz clic en el botón Vista previa.
- Ingresa el nombre del paquete de tu aplicación y haz clic en Generate start preview link.
- Usa el vínculo generado o el código QR para iniciar la aplicación
- Puedes salir del modo de vista previa siguiendo el vínculo que genera el vínculo Generate end preview. en la interfaz web.
Depuración
Si necesitas solucionar problemas con la implementación del contenedor, habilita el registro detallado llamando
TagManager.setVerboseLoggingEnabled(true)
// Modify the log level of the logger to print out not only // warning and error messages, but also verbose, debug, info messages. tagManager.setVerboseLoggingEnabled(true);
Publicación
Después de obtener una vista previa del contenedor y verificar que funcione según lo previsto, puedes publicar tu contenedor. Tu los valores de configuración, las etiquetas y los eventos de los contenedores estarán disponibles para los usuarios la próxima vez que se actualicen los contenedores. Obtén más información sobre cómo actualizar contenedores.
Configuración avanzada
En las siguientes secciones, se describen las opciones de configuración avanzada que deseas usar para personalizar aún más tu Implementación de Google Tag Manager
Cómo actualizar el contenedor
De forma predeterminada, tu contenedor se vuelve apto para actualizarse cada 12 horas. Cómo actualizar manualmente
el contenedor, usa
ContainerHolder.refresh()
ContainerHolderSingleton.getContainerHolder().refresh();
Esta es una llamada asíncrona que no se mostrará de inmediato. Para reducir el tráfico de red, refresh()
puede
solo se llamará una vez cada 15 minutos; de lo contrario, será una no-op.