In diesem Dokument wird eine ältere Version des iOS SDK beschrieben. Wenn Sie Analytics noch nicht verwendet haben, verwenden Sie das neueste SDK. Weitere Informationen

Erweiterte Konfiguration – iOS SDK

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

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]];
}