Google Analytics SDK для iOS – переход на версию 3

В этом руководстве описывается, как перейти на версию 3 Google Analytics SDK для iOS.

Краткий обзор: что нового в версии 3

API-интерфейсы в версии 3 были переработаны, чтобы обеспечить большую согласованность на собственных и веб-платформах. Всем пользователям V2 следует обратить внимание на эти изменения:

  • Обращения теперь отправляются с использованием одного метода send:(NSDictionary *)params .
  • Автоматическое управление сеансами на стороне клиента было удалено. Вместо этого тайм-аут сеанса можно настроить в интерфейсе управления. Узнать больше .
  • Режим отладки заменен на Logger
  • Новое: добавлен флаг dryRun , предотвращающий появление отправленных данных в отчетах.
  • Новое: для iOS добавлена ​​поддержка местных валют.

Полный список изменений смотрите в журнале изменений .

Прежде чем вы начнете

Прежде чем начать обновление до версии 3, вам потребуется следующее:

Пути обновления

Чтобы начать, выберите путь обновления до v3 из вашей текущей реализации:

от v1.x до v3

Пользователям Google Analytics iOS SDK v1.x рекомендуется следовать Руководству по началу работы с версией 3, чтобы начать использовать версию 3.

от v2.x до v3

Пользователи версии 2.x должны выполнить следующие действия для обновления до версии 3:

  1. Замените все удобные методы send<hit-type> новым методом send: ::
    // 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. Автоматическое управление сеансами на стороне клиента было удалено в версии 3. Период ожидания сеанса можно установить в интерфейсе управления. По умолчанию он составляет 30 минут . Сеансы также можно запускать и останавливать вручную с помощью параметра sessionControl . Узнайте больше об управлении сеансами в версии 3.

  3. Пользователям автоматического отслеживания экрана следует заменить ссылки на GAITrackedViewController.trackedViewName на 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. Режим отладки устарел — вместо него используйте Logger :
    // v2 (Old)
    [GAI sharedInstance].debug = YES;
    
    // v3
    [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
    
  5. Свойство GAI.useHttp было удалено. Чтобы отправлять обращения с использованием HTTP вместо HTTPS по умолчанию, вместо этого установите параметр kGAIUseSecure для каждого 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. SDK v3 больше не запускает автоматически новый сеанс при открытии приложения. Если вы хотите сохранить это поведение из версии 2, вам необходимо реализовать собственную логику управления сеансом, когда пользователь запускает приложение:
  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. Настройка отказа на уровне приложения больше не сохраняется в SDK и должна устанавливаться при каждом запуске приложения (по умолчанию NO ). Узнайте больше о настройке отказа на уровне приложения .

Ссылка

В следующих разделах представлены справочные примеры установки и отправки данных с помощью V3 SDK.

Отправка данных с использованием словарей в версии 3

В V3 данные отправляются с использованием одного метода send: который принимает в качестве аргумента NSDictionary полей и значений Google Analytics. Для упрощения процесса создания обращений предусмотрен служебный класс 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.

Класс GAIDictionaryBuilder можно использовать для создания любого из поддерживаемых типов обращений, например событий:

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

Узнайте больше об отправке данных в версии 3 .

Настройка данных на трекере в v3

Значения также можно устанавливать непосредственно в GAITracker с помощью метода set:value:forKey . Значения, установленные напрямую, применяются ко всем последующим обращениям из этого 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]];

Чтобы очистить значение, установленное в GAITracker , установите для свойства значение 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]];

Узнайте больше о настройке данных в версии 3.