Dieses Dokument bietet einen Überblick über einige der erweiterten Konfigurationsfunktionen des Google Analytics SDK für iOS Version 3.
Übersicht
Das Google Analytics SDK for iOS bietet eine
GAITracker
-Klasse zum Festlegen und Senden von Daten an Google Analytics und ein
GAI
-Singleton, das als Schnittstelle für die globalen Konfigurationswerte deiner Implementierung dient.
Initialisierung
Bevor Daten gemessen werden können, müssen Sie mindestens einen Tracker über GoogleAnalytics
-Singleton initialisieren. Geben Sie dazu einen Namen für den Tracker und eine Google Analytics-Property-ID an:
// Initialize a tracker using a Google Analytics property ID. [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"];
Dieser Tracker kann jetzt verwendet werden, um Daten festzulegen und an Google Analytics zu senden.
Daten festlegen und senden
Die Daten werden an Google Analytics gesendet, indem sie Parameter-Wert-Paare im Tracker festlegen und über die Methoden set
und send
gesendet werden:
/* * Send a screen view to Google Analytics by setting a map of parameter * values on the tracker and calling send. */ // Retrieve tracker with placeholder property ID. id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"]; NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"appview", kGAIHitType, @"Home Screen", kGAIScreenName, nil]; [tracker send:params];
Die Klasse GAIDictionaryBuilder
vereinfacht das Erstellen von Treffern und wird für die meisten Anwendungsfälle empfohlen. Hier können Sie einen Bildschirmaufruf mit weniger Codezeilen senden:
// Previous V3 SDK versions. // Sending the same screen view hit using [GAIDictionaryBuilder createAppView] // [tracker send:[[[GAIDictionaryBuilder createAppView] set:@"Home Screen" // forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. // Sending the same screen view hit using [GAIDictionaryBuilder createScreenView] [tracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen" forKey:kGAIScreenName] build]];
Measurement Protocol-Kaufmännische Syntax
Werte können auch für einen einzelnen Treffer festgelegt werden. Dazu legen Sie den Wert für ein Builder
oder für alle nachfolgenden Treffer fest. Dazu können Sie ihn mit dem Measurement Protocol-kaufmännischen Und-Zeichen in der folgenden Zeile im Tracker-Objekt selbst festlegen:
// Sending the same screen view hit using ampersand syntax. // Previous V3 SDK versions. // [tracker send:[[[GAIDictionaryBuilder createAppView] set:@"Home Screen" // forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. [tracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen" forKey:kGAIScreenName] build]];
Eine vollständige Liste der verfügbaren Measurement Protocol-Parameter finden Sie in der Measurement Protocol Parameter Reference.
Anwenden mehrerer Werte auf mehrere Treffer
Alle direkt im Tracker festgelegten Werte werden beibehalten und auf mehrere Treffer angewendet, wie in diesem Beispiel:
// May return nil if a tracker has not yet been initialized with // a property ID. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; // Set screen name on the tracker to be sent with all hits. [tracker set:kGAIScreenName value:@"Home Screen"]; // Send a screen view for "Home Screen". // [tracker send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [tracker send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up. // This event will also be sent with &cd=Home%20Screen. [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"UX" action:@"touch" label:@"menuButton" value:nil] build]]; // Clear the screen name field when we're done. [tracker set:kGAIScreenName value:nil];
Nur Werte, die über mehrere Treffer hinweg beibehalten werden sollen, sollten direkt im Tracker festgelegt werden. Das Festlegen eines Bildschirmnamens für einen Tracker ist sinnvoll, da derselbe Wert auf nachfolgende Bildschirmaufrufe und Ereignistreffer angewendet werden kann. Es wird jedoch nicht empfohlen, ein Feld wie den Treffertyp für den Tracker festzulegen, da sich dieser wahrscheinlich bei jedem Treffer ändert.
Verwendung mehrerer Tracker
In einer Implementierung können mehrere Tracker verwendet werden. Das kann nützlich sein, um Daten an mehrere Properties zu senden:
id<GAITracker> t1 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-1"]; // Trackers may be named. By default, name is set to the property ID. id<GAITracker> t2 = [[GAI sharedInstance] trackerWithName:@"altTracker" trackingId:@"UA-XXXX-2"]; [t1 set:kGAIScreenName value:@"Home Screen"]; [t2 set:kGAIScreenName value:NSStringFromClass([self class])]; // Send a screenview to UA-XXXX-1. // [t1 send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [t1 send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up. // Send a screenview to UA-XXXX-2. // [t2 send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [t2 send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up.
Für automatische Analysefunktionen wie die automatische Bildschirmanalyse und die Erfassung nicht erfasster Ausnahmen wird nur ein Tracker zum Senden von Daten an Google Analytics verwendet. Wenn Sie diese Funktionen verwenden und Daten mit anderen Trackern senden möchten, müssen Sie dies manuell tun.
Zur automatischen Bildschirmmessung wird der Tracker verwendet, der in der Property tracker
eines bestimmten GAITrackedViewController
angegeben ist.
Für die Erfassung nicht erfasster Ausnahmen wird der Standard-Tracker verwendet, der in der Instanz GAI
angegeben ist.
Standard-Tracker verwenden
In Google Analytics wird ein Standard-Tracker verwaltet. Der erste initialisierte Tracker wird zum Standard-Tracker, kann aber überschrieben werden:
// t1 becomes the default tracker because it is the first tracker initialized. id<GAITracker> t1 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-1"]; id<GAITracker> t2 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-2"]; // Returns t1. id<GAITracker> defaultTracker = [[GAI sharedInstance] defaultTracker]; // Hit sent to UA-XXXX-1. // Previous V3 SDK versions. // [defaultTracker send:[[[GAIDictionaryBuilder createAppView] // set:@"Home Screen" forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. [defaultTracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen" forKey:kGAIScreenName] build]]; // Override the default tracker. [[GAI sharedInstance] setDefaultTracker:t2]; // Returns t2. defaultTracker = [[GAI sharedInstance] defaultTracker]; // Hit sent to UA-XXXX-2. // Previous V3 SDK versions. // [defaultTracker send:[[[GAIDictionaryBuilder createAppView] // set:NSStringFromClass([self class]) // forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. [defaultTracker send:[[[GAIDictionaryBuilder createScreenView] set:NSStringFromClass([self class]) forKey:kGAIScreenName] build]];
Probenahme
Sie können clientseitige Stichproben aktivieren, um die Anzahl der an Google Analytics gesendeten Treffer zu begrenzen. Wenn Ihre App eine große Anzahl von Nutzern hat oder anderweitig eine große Datenmenge an Google Analytics sendet, können Sie durch die Verwendung von Probenahmen eine unterbrechungsfreie Berichterstellung gewährleisten.
Wenn Sie beispielsweise clientseitige Probeinhalte mit einer Rate von 50 % implementieren möchten, verwenden Sie den folgenden Code:
// Assumes a tracker has already been initialized with a property ID, otherwise // getDefaultTracker returns nil. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; // Set a sample rate of 50%. [tracker set:kGAISampleRate value:@"50.0"];
Deaktivierung auf App-Ebene
Sie können ein Opt-out-Flag auf App-Ebene aktivieren, mit dem Google Analytics für die gesamte App deaktiviert wird. Beachten Sie, dass dieses Flag bei jedem Start der App festgelegt werden muss und standardmäßig auf NO
gesetzt ist.
So rufen Sie die Einstellung auf App-Ebene ab:
// Get the app-level opt out preference. if ([GAI sharedInstance].optOut) { ... // Alert the user they have opted out. }
So legen Sie die Deaktivierung auf App-Ebene fest:
// Set the app-level opt out preference. [[GAI sharedInstance] setOptOut:YES];
Clientseitige Nutzerdaten löschen
Wenn Sie die clientseitigen Google Analytics-Daten für Ihre Endnutzer zurücksetzen oder löschen müssen, können Sie die Google Analytics-Dateien löschen oder eine neue Client-ID festlegen.
Option 1: Google Analytics-Dateien löschen
Wenn in deiner App nicht explizit die Client-ID für einen Endnutzer festgelegt ist, kannst du das Generieren einer neuen Client-ID erzwingen, indem du die zum Speichern der Client-ID verwendeten Google Analytics-Dateien löschst.
Mit der folgenden Beispielmethode können Sie die Google Analytics-Dateien löschen. Die Methode muss vor der Initialisierung von Google Analytics ausgeführt werden:
/* Execute this before [GAI sharedInstance] is initialized. */ static void DeleteGAFiles(void) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *libraryFiles = [fileManager contentsOfDirectoryAtPath:paths.firstObject error:nil]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self BEGINSWITH 'googleanalytics'"]; NSArray *matchingFileNames = [libraryFiles filteredArrayUsingPredicate:predicate]; for (NSString *fileName in matchingFileNames) { NSError *error; NSString *filePath = [paths.firstObject stringByAppendingPathComponent:fileName]; if (![fileManager removeItemAtPath:filePath error:&error]) { // Log error. } } }
Option 2: Neue Client-ID festlegen
Sie können eine neue eindeutige Client-ID generieren und festlegen. Für alle nachfolgenden Treffer wird die neue Client-ID verwendet und vorherige Daten werden nicht der neuen Client-ID zugeordnet.
Führen Sie den folgenden Code aus, um eine neue Client-ID zu generieren und festzulegen:
[GAI sharedInstance].optOut = YES; // This Id should be a valid UUID (version 4) string as described in https://goo.gl/0dlrGx. NSString *newClientID = [NSUUID UUID].UUIDString.lowercaseString; id dispatcher = [[GAI sharedInstance] performSelector:@selector(dispatcher)]; id dataStore = [dispatcher performSelector:@selector(dataStore)]; if ([dataStore respondsToSelector:@selector(setClientId:)]) { [dataStore performSelector:@selector(setClientId:) withObject:newClientID]; } [GAI sharedInstance].optOut = NO;
IP-Anonymisierung
Durch das Aktivieren der Anonymisierung von IP-Adressen wird Google Analytics angewiesen, die vom SDK gesendeten IP-Informationen zu anonymisieren. Dabei wird das letzte Oktett der IP-Adresse vor dem Speichern entfernt.
Im folgenden Beispiel wird gezeigt, wie die Anonymisierung von IP-Funktionen für einen Tracker aktiviert wird:
[tracker set:kGAIAnonymizeIp value:@"1"];
Die Anonymisierung von IP-Funktionen kann jederzeit eingerichtet werden.
Testen und Fehler beheben
Das Google Analytics SDK für iOS bietet Tools, die das Testen und Debugging vereinfachen.
Probelauf
Das SDK enthält das Flag dryRun
. Wird dieses Flag festgelegt, wird verhindert, dass Daten an Google Analytics gesendet werden. Das Flag dryRun
sollte festgelegt werden, wenn Sie eine Implementierung testen oder Fehler darin beheben und keine Testdaten in Ihren Google Analytics-Berichten sehen möchten.
So legen Sie das Flag für den Probelauf fest:
[[GAI sharedInstance] setDryRun:YES];
Logger
Das Protokoll GAILogger
wird zur Verarbeitung nützlicher Nachrichten aus dem SDK in folgenden Ausführlichkeitsgraden bereitgestellt: error
, warning
, info
und verbose
.
Das SDK initialisiert eine standardmäßige Logger
-Implementierung, die standardmäßig nur Warnungen oder Fehlermeldungen in der Konsole protokolliert. So legen Sie die Ausführlichkeit von Logger
fest:
// Set the log level to verbose. [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
Benutzerdefinierte Implementierungen von Logger
können auch verwendet werden:
// Provide a custom logger. [[GAI sharedInstance].logger = [[CustomLogger alloc] init];
Vollständiges Beispiel
Das folgende Beispiel zeigt den Code, der zum Initialisieren einer Google Analytics-Implementierung und zum Senden eines einzelnen Bildschirmaufrufs erforderlich ist.
Als Nächstes wird ein Bildschirmaufruf gemessen, wenn einem Nutzer der erste Bildschirm angezeigt wird:
Die Initialisierung einer Implementierung kann in der Regel über den Anwendungsdelegat erfolgen. Hier ein Beispiel:
// // AppDelegate.h // #import <UIKit/UIKit.h> #import "GAI.h" @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) id<GAITracker> tracker; @end // // AppDelegate.m // #import "AppDelegate.h" /** Google Analytics configuration constants **/ static NSString *const kGaPropertyId = @"UA-XXXX-Y"; // Placeholder property ID. static NSString *const kTrackingPreferenceKey = @"allowTracking"; static BOOL const kGaDryRun = NO; static int const kGaDispatchPeriod = 30; @interface AppDelegate () - (void)initializeGoogleAnalytics; @end @implementation AppDelegate - (void)applicationDidBecomeActive:(UIApplication *)application { [GAI sharedInstance].optOut = ![[NSUserDefaults standardUserDefaults] boolForKey:kTrackingPreferenceKey]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Do other work for customization after application launch // then initialize Google Analytics. [self initializeGoogleAnalytics]; return YES; } - (void)initializeGoogleAnalytics { [[GAI sharedInstance] setDispatchInterval:kGaDispatchPeriod]; [[GAI sharedInstance] setDryRun:kGaDryRun]; self.tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; } // The rest of the app delegate code omitted. @end
So messen Sie einen Bildschirmaufruf, wenn einem Nutzer eine Ansicht angezeigt wird:
// // MyViewController.m // #import "MyViewController.h" #import "AppDelegate.h" #import "GAI.h" #import "GAIFields.h" #import "GAITracker.h" #import "GAIDictionaryBuilder.h" @implementation MyViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // This screen name value will remain set on the tracker and sent with // hits until it is set to a new value or to nil. [[GAI sharedInstance].defaultTracker set:kGAIScreenName value:@"Home Screen"]; // Send the screen view. // Previous V3 SDK versions. // [[GAI sharedInstance].defaultTracker // send:[[GAIDictionaryBuilder createAppView] build]]; // SDK Version 3.08 and up. [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createScreenView] build]]; }