Google Analytics SDK für iOS – Migration zu Version 3

In diesem Leitfaden wird beschrieben, wie Sie ein Upgrade auf Version 3 des Google Analytics SDK for iOS ausführen.

Live-Anzeige: Neuerungen in V3

Die APIs in V3 wurden refaktoriert, damit sie auf nativen Plattformen und Webplattformen einheitlicher sind. Alle Nutzer der Version 2 sollten diese Änderungen beachten:

  • Treffer werden jetzt mit einer einzigen send:(NSDictionary *)params-Methode gesendet.
  • Die automatische clientseitige Sitzungsverwaltung wurde entfernt. Die Zeitüberschreitung für Sitzungen kann stattdessen in der Verwaltungsoberfläche konfiguriert werden. Weitere Informationen
  • Der Debug-Modus wurde durch „Logger“ ersetzt
  • Neu: Das Flag dryRun wurde hinzugefügt, um zu verhindern, dass weitergeleitete Daten in Berichten angezeigt werden.
  • Neu: Für iOS wurde die Unterstützung lokaler Währungen hinzugefügt.

Eine vollständige Liste der Änderungen finden Sie im Änderungsprotokoll.

Vorbereitung

Für das Upgrade auf v3 ist Folgendes erforderlich:

Upgrade-Pfade

Wählen Sie zuerst einen Upgradepfad zu v3 aus Ihrer aktuellen Implementierung aus:

Version 1.x bis Version 3

Für den Einstieg in Version 3 des Google Analytics iOS SDK (Version 1.x) wird empfohlen, dem Startleitfaden zu Version 3 zu folgen.

Version 2.x bis Version 3

v2.x-Nutzer sollten wie folgt ein Upgrade auf v3 durchführen:

  1. Ersetzen Sie alle send<hit-type>-Convenience-Methoden durch die neue send:-Methode:
    // 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.
    
  2. Die automatische, clientseitige Sitzungsverwaltung wurde in Version 3 entfernt. Das Zeitlimit für Sitzungen kann in der Verwaltungsoberfläche festgelegt werden. Die Standardeinstellung beträgt 30 Minuten. Sitzungen können mit dem Parameter sessionControl auch manuell gestartet und beendet werden. Weitere Informationen zur Sitzungsverwaltung in Version 3.

  3. Nutzer des automatischen Bildschirm-Trackings sollten Verweise auf GAITrackedViewController.trackedViewName durch GAITrackedViewController.screenName ersetzen:
    // 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.
    
  4. Der Debug-Modus wurde eingestellt. Verwenden Sie stattdessen Logger:
    // v2 (Old)
    [GAI sharedInstance].debug = YES;
    
    // v3
    [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
    
  5. Die Eigenschaft GAI.useHttp wurde entfernt. Um Treffer über HTTP anstelle des Standard-HTTPS zu senden, lege stattdessen den Parameter kGAIUseSecure für jede GAITracker fest:
    // 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]];
    
    }
    
  6. Das v3 SDK startet nicht mehr automatisch eine neue Sitzung beim Öffnen der App. Wenn Sie dieses Verhalten aus v2 beibehalten möchten, müssen Sie beim Starten der Anwendung durch einen Nutzer eine eigene Sitzungssteuerungslogik implementieren:
  7. // 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];
    
        // 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]];
    
    
  8. Die Deaktivierungseinstellung auf App-Ebene wird nicht mehr vom SDK beibehalten und muss bei jedem Start der App festgelegt werden (standardmäßig NO). Weitere Informationen zum Deaktivieren auf Anwendungsebene.

Referenz

Die folgenden Abschnitte enthalten Referenzbeispiele zum Festlegen und Senden von Daten mit dem V3 SDK.

Daten über Wörterbücher in Version 3 senden

In V3 werden Daten mit einer einzigen send:-Methode gesendet, die ein NSDictionary aus Google Analytics-Feldern und -Werten als Argument verwendet. Es wird eine GAIDictionaryBuilder-Dienstprogrammklasse bereitgestellt, um das Erstellen von Treffern zu vereinfachen:

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.

Mit der Klasse GAIDictionaryBuilder können beliebige unterstützte Treffertypen erstellt werden, z. B. Ereignisse:

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

Weitere Informationen zum Senden von Daten in Version 3

Daten auf dem Tracker in v3 festlegen

Werte können mithilfe der Methode set:value:forKey auch direkt in einem GAITracker festgelegt werden. Die direkt festgelegten Werte werden auf alle nachfolgenden Treffer aus dieser GAITracker angewendet:

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

Wenn du einen Wert löschen möchtest, der für GAITracker festgelegt wurde, setze das Attribut auf 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]];

Weitere Informationen zum Festlegen von Daten in Version 3