Google Analytics SDK na iOS – przejście na wersję 3

Z tego przewodnika dowiesz się, jak zaktualizować pakiet SDK Google Analytics na iOS do wersji 3.

W skrócie: co nowego w wersji 3

Przekształcono interfejsy API w wersji 3, aby były bardziej spójne na platformach natywnych i internetowych. Wszyscy użytkownicy wersji 2 powinni zwrócić uwagę na te zmiany:

  • Działania są teraz wysyłane za pomocą pojedynczej metody send:(NSDictionary *)params.
  • Automatyczne zarządzanie sesjami po stronie klienta zostało usunięte. Limit czasu sesji można zamiast tego skonfigurować w interfejsie zarządzania. Więcej informacji
  • Tryb debugowania został zastąpiony przez zasadę Logger
  • Nowość: dodano flagę dryRun, aby zapobiec wyświetlaniu wysyłanych danych w raportach.
  • Nowość: dodaliśmy obsługę walut lokalnych w iOS.

Pełną listę zmian znajdziesz w historii zmian.

Zanim zaczniesz

Przed rozpoczęciem aktualizacji do wersji v3 potrzebne są:

Ścieżki uaktualnienia

Aby rozpocząć, wybierz ścieżkę uaktualnienia do wersji 3 z bieżącej implementacji:

Wersje od 1.x do 3

Zalecamy, aby użytkownicy pakietu Google Analytics iOS SDK w wersji 1.x zaczęli korzystać z wersji 3, postępując zgodnie z wprowadzeniem do wersji 3.

Wersje 2.x do 3

Użytkownicy wersji 2.x powinni wykonać następujące czynności, aby przejść na wersję 3:

  1. Zastąp wszystkie wygodne metody send<hit-type> nową send: metodą:
    // 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. Automatyczne zarządzanie sesjami po stronie klienta zostało usunięte w wersji 3. Limit czasu sesji możesz ustawić w interfejsie zarządzania. Domyślny czas to 30 minut. Sesje można też uruchamiać i zatrzymywać ręcznie za pomocą parametru sessionControl. Dowiedz się więcej o zarządzaniu sesjami w wersji 3.

  3. Użytkownicy funkcji automatycznego śledzenia ekranu powinni zastąpić odniesienia do GAITrackedViewController.trackedViewName wartością GAITrackedViewController.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.
    
  4. Tryb debugowania został wycofany – użyj zamiast niego trybu Logger:
    // v2 (Old)
    [GAI sharedInstance].debug = YES;
    
    // v3
    [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
    
  5. Usunięto właściwość GAI.useHttp. Aby wysyłać działania przez HTTP zamiast domyślnego HTTPS, ustaw parametr kGAIUseSecure dla każdej wartości GAITracker:
    // 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. Pakiet SDK w wersji 3 nie rozpoczyna już automatycznie nowej sesji po otwarciu aplikacji. Aby zachować takie zachowanie jak w wersji 2, musisz wdrożyć własną logikę kontroli sesji, gdy użytkownik uruchamia aplikację:
  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. Ustawienie rezygnacji na poziomie aplikacji nie jest już utrzymywane przez pakiet SDK i musi być ustawione przy każdym uruchomieniu aplikacji (wartość domyślna to NO). Więcej informacji o ustawianiu rezygnacji na poziomie aplikacji

Dokumentacja

W kolejnych sekcjach znajdziesz przykłady konfigurowania i wysyłania danych za pomocą pakietu SDK V3.

Wysyłanie danych przy użyciu słowników w wersji 3

W wersji 3 dane są wysyłane za pomocą pojedynczej metody send:, która wykorzystuje jako argument NSDictionary pola i wartości Google Analytics. Aby uprościć proces tworzenia działań, dostępna jest klasa narzędziowa GAIDictionaryBuilder:

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.

Klasy GAIDictionaryBuilder można używać do tworzenia obsługiwanych typów działań, takich jak zdarzenia:

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

Więcej informacji o wysyłaniu danych w wersji 3

Ustawianie danych w trackerze w wersji 3

Wartości można też ustawić bezpośrednio w elemencie GAITracker za pomocą metody set:value:forKey. Wartości ustawione bezpośrednio są stosowane do wszystkich kolejnych działań pochodzących z tego zasobu (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]];

Aby usunąć wartość ustawioną w GAITracker, ustaw tę właściwość na 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]];

Więcej informacji o ustawianiu danych w wersji 3