En esta guía, se describe cómo actualizar a la versión 3 del SDK de Google Analytics para iOS.
De un vistazo: Novedades de V3
Se refactorizaron las APIs de la versión 3 para que sean más coherentes entre las plataformas nativas y web. Todos los usuarios de V2 deben tener en cuenta estos cambios:
- Los hits ahora se envían con un solo método
send:(NSDictionary *)params
. - Se quitó la administración automática de la sesión del cliente. El tiempo de espera de la sesión se puede configurar en la interfaz de administración en su lugar. Más información.
- Se reemplazó el modo de depuración por
Logger
. - Nuevo: Se agregó una marca
dryRun
para evitar que los datos enviados aparezcan en los informes. - Nuevo: Se agregó compatibilidad con las monedas locales para iOS.
Para obtener la lista completa de los cambios, consulta el Registro de cambios.
Antes de comenzar
Antes de comenzar la actualización a la versión 3, necesitarás lo siguiente:
- Una propiedad habilitada para Universal Analytics y un perfil de aplicación
- SDK de Google Analytics para iOS versión 3
Rutas de actualización
Para comenzar, selecciona una ruta de actualización a la versión 3 de tu implementación actual:
De la versión 1.x a la v3
Se recomienda que los usuarios de la versión 1.x del SDK de Google Analytics para iOS sigan la guía de introducción de la versión 3 para comenzar a usar la versión 3.
v2.x a v3
Los usuarios de la versión 2.x deben seguir estos pasos para actualizar a la versión 3:
- Reemplaza todos los métodos de conveniencia
send<hit-type>
por el nuevo métodosend:
:// v2 (Old) id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker sendView:@"HomeScreen"];
// v3 id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; // Set the screen name on the tracker so that it is used in all hits sent from this screen. [tracker set:kGAIScreenName value:@"Home Screen"]; // Send a screenview. // [tracker send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [tracker send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up.
- En la versión 3, se quitó la administración automática de las sesiones del cliente. El período de espera de la sesión se puede establecer en la interfaz de administración y se establece de forma predeterminada en 30 minutos.
Las sesiones también se pueden iniciar y detener de forma manual con el parámetro
sessionControl
. Obtén más información sobre la administración de sesiones en la versión 3. - Los usuarios del
seguimiento automático de pantalla deben reemplazar las referencias a
GAITrackedViewController.trackedViewName
porGAITrackedViewController.screenName
:// v2 (Old) #import "GAITrackedViewController.h" @implementation AboutViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.trackedViewName = @"About Screen"; } // ... Rest of ViewController implementation.
// v3 #import "GAITrackedViewController.h" @implementation AboutViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.screenName = @"About Screen"; } // ... Rest of ViewController implementation.
- El modo de depuración dejó de estar disponible. En su lugar, usa
Logger
:// v2 (Old) [GAI sharedInstance].debug = YES;
// v3 [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
- Se quitó la propiedad
GAI.useHttp
. Para enviar hits con HTTP en lugar del HTTPS predeterminado, configura el parámetrokGAIUseSecure
en cadaGAITracker
:// v2 (Old) // AppDelegate.m #import AppDelegate.h #import GAI.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { static NSString const *kGaPropertyId = @"UA-XXXX-Y"; id
tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; // Send hits using HTTP (default=HTTPS). tracker.useHttps = NO; } // v3 // AppDelegate.m #import AppDelegate.h #import GAI.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { static NSString const *kGaPropertyId = @"UA-XXXX-Y"; id
tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; // Send hits using HTTP (default=HTTPS). [tracker set:kGAIUseSecure value:[@NO stringValue]]; } - El SDK de la versión 3 ya no inicia automáticamente una sesión nueva cuando se abre la aplicación. Si deseas conservar este comportamiento de la versión 2, debes implementar tu propia lógica de control de sesión cuando un usuario inicie la app:
- El SDK ya no conserva la configuración de inhabilitación a nivel de la app y debe establecerse cada vez que se inicia la app (el valor predeterminado es
NO
). Obtén más información para configurar la inhabilitación a nivel de la aplicación.
// AppDelegate.m #import AppDelegate.h #import GAI.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { static NSString const *kGaPropertyId = @"UA-XXXX-Y"; idtracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; // CAUTION: Setting session control directly on the tracker persists the // value across all subsequent hits, until it is manually set to null. // This should never be done in normal operation. // // [tracker set:kGAISessionControl value:@"start"]; // Instead, send a single hit with session control to start the new session. [tracker send:[[[GAIDictionaryBuilder createEventWithCategory:@"UX" action:@"appstart" label:nil value:nil] set:@"start" forKey:kGAISessionControl] build]];
Reference
En las siguientes secciones, se proporcionan ejemplos de referencia sobre cómo configurar y enviar datos con el SDK de la versión 3.
Cómo enviar datos mediante diccionarios en la versión 3
En la versión 3, los datos se envían a través de un solo método
send:
que toma
un NSDictionary
de campos y valores de Google Analytics como argumento. Se proporciona una clase de utilidad GAIDictionaryBuilder
para simplificar el proceso de compilación de hits:
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker set:kGAIScreenName value:@"Home Screen"]; // Previous V3 SDK versions. // [tracker send:[[GAIDictionaryBuilder createAppView] setValue:@"Premium" // Creates a Map of hit type 'AppView' (screenview) and set any additional fields. // forKey:[customDimensionForIndex:1] build]; // Build and return the dictionary to the send method. // SDK Version 3.08 and up. [tracker send:[[GAIDictionaryBuilder createScreenView] setValue:@"Premium" // Creates a Map of hit type 'ScreenView' and set any additional fields. forKey:[customDimensionForIndex:1] build]; // Build and return the dictionary to the send method.
La clase GAIDictionaryBuilder
se puede usar para compilar cualquiera de los tipos de hits admitidos, como los eventos:
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" // Event category (required) action:@"button_press" // Event action (required) label:@"play" // Event label value:nil] build]]; // Event value
Más información sobre el envío de datos en la versión 3.
Configuración de datos en el rastreador en la versión 3
Los valores también se pueden configurar directamente en un objeto GAITracker
con el método set:value:forKey
.
Los valores establecidos directamente se aplican a todos los hits posteriores a partir de ese
GAITracker
:
// Values set directly on a tracker apply to all subsequent hits. [tracker set:kGAIScreenName value:@"Home Screen"]; // This screenview hit will include the screen name "Home Screen". // [tracker send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [tracker send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up. // And so will this event hit. [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" action:@"button_press" label:@"play" value:nil] build]];
Para borrar un valor que se estableció en GAITracker
, establece la propiedad en nil
:
// Clear the previously-set screen name value. [tracker set:kGAIScreenName value:nil]; // Now this event hit will not include a screen name value. [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" action:@"button_press" label:@"play" value:nil] build]];