Hace un tiempo escribí una entrada en el weblog sobre cómo instalar Administrador de etiquetas de Google para iOS usando el lenguaje de programación Swift (puedes leer el artículo aquí). He estado trabajando mucho con Swift últimamente y estoy cada vez más convencido de que GTM es en realidad una utilidad muy poderosa para ejecutar en su aplicación iOS en lugar de SDK de Google Analytics.
¿Por qué? Porque abstrae gran parte del meollo de la cuestión que de otro modo necesitaría administrar explícitamente en su instalación GA. Además, al utilizar el TAGDataLayer
interfaz, estás abstrayendo cosas tú mismono obligado a adoptar ninguna sintaxis o estructura semántica específica en su seguimiento. En su lugar, aprovechará pares clave-valor genéricos y una estructura de objetos, con la que probablemente ya esté familiarizado si ha trabajado con GTM para la internet.
En cualquier caso, aquí hay algunos consejos que descubrí mientras trabajaba con el SDK. Algunos de ellos pueden ser bastante evidentes, pero de todos modos son útiles. Además, he aprendido que nada es 100% evidente en el mundo de GTM.
incógnita
El boletín a fuego lento
Suscríbete al Boletín a fuego lento para recibir las últimas noticias y contenido de Simo Ahava en su bandeja de entrada de correo electrónico.
Consejo 35: ¡Muchos consejos sobre GTM4iOS!
Los consejos son:
-
Envíe la cola Tag Supervisor/GA cuando la aplicación entre en segundo plano o finalice
-
Registre detalladamente y establezca el intervalo de envío en 1 segundo solo durante la depuración
-
Purga
dataLayer
entre empujones -
Utilice el
dryRun
delGAI.sharedInstance()
para evitar enviar datos a GA -
Obtenga el ID de cliente de Google Analytics de la instancia del rastreador
-
Lively IDFA en sus etiquetas
1. Envíe la cola Tag Supervisor/GA cuando la aplicación entre en segundo plano o finalice
Una de las características predeterminadas bastante feas de los SDK de Google Analytics y Google Tag Supervisor es que tienen un 120 segundos intervalo de lote. Tiene mucho sentido cuando la aplicación se está ejecutando, ya que conserva la batería, and so on., pero es desagradable cuando la aplicación está en segundo plano. Básicamente, obliga a la aplicación a “despertarse” después de 120 segundos de inactividad, solo para que se envíe la cola.
En Delegado de aplicacionestienes un montón de funciones útiles que puedes usar para ejecutar comandos cuando la aplicación esté lista para hacer algo. Además, el TAGManager
La implementación tiene el método. dispatch()
que le permite enviar todas las visitas que se encuentran actualmente en la cola de envío. Entonces, al combinar estos dos, puedes vaciar la cola cada vez que la aplicación esté a punto de entrar en segundo plano o finalizar.
func applicationDidEnterBackground(utility: UIApplication) {
tagManager.dispatch()
}
func applicationWillTerminate(utility: UIApplication) {
tagManager.dispatch()
}
2. Registre detalladamente y establezca el intervalo de envío en 1 segundo solo al realizar la depuración.
Si has configurado macros de preprocesador (¡Deberías hacerlo!), puedes ejecutar código solo cuando estés en un entorno determinado, como management de calidad, preparación o producción.
GTM también proporciona un registro detallado y puede configurar el intervalo de envío de la cola de solicitudes (consulte el consejo anterior) manualmente. Ahora, mix todo esto en un tazón, revuelva bien y obtendrá algunas herramientas de depuración realmente poderosas.
#if !ENV_PROD
tagManager.logger.setLogLevel(kTAGLoggerLogLevelVerbose)
tagManager.dispatchInterval = NSTimeInterval(1.0)
#endif
El primer comando establece el nivel de registro en detallado y el segundo establece el intervalo de envío en solo un segundo. Ambos comandos sólo se ejecutan si el entorno no es ENV_PROD, cubriendo así ENV_QA, ENV_TEST, ENV_DEBUG, and so on. Estos son, por supuesto, sólo ejemplos, y su configuración probablemente utilice otros nombres.
Puedes utilizar el #if DEBUG
más lejos en el containerAvailable
devolución de llamada, que se invoca cuando se abre un contenedor por primera vez. Ahora, si está depurando la implementación de GTM, es posible que también esté actualizando el contenedor en Google Tag Supervisor y es posible que desee ver los cambios inmediatamente en lugar de tener que hacerlo. espera las 12 horas que el contenedor se vuelva obsoleto. Entonces, modifique la devolución de llamada en consecuencia:
func containerAvailable(container: TAGContainer) -> Void {
dispatch_async(dispatch_get_main_queue(), {
self.container = container;
#if !ENV_PROD
container.refresh()
#endif
});
}
mira eso container.refresh()
¿allá? Eso recupera un contenedor a través de la purple cada vez, siempre y cuando no esté en un entorno llamado ENV_PROD.
3. Purga dataLayer
entre empujones
en mi análisis.swift módulo (ver Este artículo para obtener más información), llamo a la siguiente función justo después dataLayer.push()
donde se pasan el contenido o las dimensiones personalizadas con alcance de visitas. Para mantener la coherencia, he creado un dataLayer
sintaxis, donde todos los datos del contenido se almacenan bajo la clave contentData
y todos los datos de comercio electrónico se almacenan bajo la clave ecommerce
. Tengo otras colecciones también, como metaData
y userData
pero quiero que estos persistan, por lo que no se realiza la purga después de su uso.
non-public static func purgeDataLayer() -> Void {
dataLayer.push((
"contentData": "",
"ecommerce" : ""
))
}
Sí, empujar cadenas en blanco es una forma torpe de purgar la estructura, pero funciona. Básicamente, cada vez que se introducen datos de contenido y de comercio electrónico en dataLayer
y posteriormente procesado por GTM, llamo purgeDataLayer()
para garantizar que esta información de alcance no persista.
4. Utilice el dryRun
del GAI.sharedInstance()
para evitar enviar datos a GA
En realidad, no estoy seguro de por qué querrías hacer esto, ya que puedes enviar tus resultados de depuración a una propiedad secundaria de Google Analytics. Pero si desea evitar enviar datos a Google Analytics y simplemente mirar los registros detallados para ver si todo funciona, puede configurar esta marca en la instancia del rastreador de Google Analytics.
Sí, soy consciente de que esto no es específico de GTM, ¡pero también funciona con rastreadores creados por GTM!
GAI.sharedInstance().dryRun = true
Un consejo sencillo, sin duda.
5. Obtenga el ID de cliente de Google Analytics de la instancia del rastreador.
Nuevamente, esto es más Google Analytics que Google Tag Supervisor, pero también funciona en este último. Todos los rastreadores creados a través de los SDK de GA o GTM tienen el mismo ID de cliente, que persiste hasta que borre todas las configuraciones y el contenido de la aplicación.
Para obtener la ID del cliente, ejecute los siguientes comandos:
let tracker = GAI.sharedInstance().trackerWithTrackingId("UA-12345-1")
let clientId = tracker.get(kGAIClientId)
Ahora clientId
tiene el ID de cliente de GA y puedes hacer lo que quieras con él. En otras palabras, puedes usar la cadena “UA-12345-1” si lo desea, ya que tendría el mismo ID de cliente que el rastreador actual (con el ID de propiedad actual de Common Analytics).
6. Lively IDFA en sus etiquetas
Este es un consejo muy easy, ya que en realidad casi no se requiere personalización. Todo lo que necesita asegurarse es que el siguiente Pod esté cargado en su Podfile:
pod 'GoogleIDFASupport'
Esto carga la biblioteca IDFA y no necesitará hacer nada más en su aplicación Swift. Lo único que tendrás que hacer es encender el Habilitar funciones de identificación de publicidad en tus etiquetas GTM.
Ahora tu aplicación enviará el &idfa; parámetro con el identificador IDFA de su dispositivo, y puede configurarlo en su informes demográficos y tu Seguimiento de campañas de instalación de iTunes y todo eso a través de GA.
Resumen
¡Eso es todo por este grupo de consejos! Tengo mucho más que compartir sobre Google Tag Supervisor para iOS, pero no puedo extinguir toda mi colección de consejos en una sola publicación.
¡Espero que te hayan resultado útiles! ¿Tienes otros trucos bajo la manga?