Зачастую бизнесу интересно не только разработать приложение для мобильных устройств, но и отслеживать статистику его использования. Одним из решений по отслеживанию статистики использования приложений для iOS является Google Analytics. О том, как встроить его поддержку в iOS-приложение мы сегодня и поговорим.

А это не для сайтов?

Мой разносторонний читатель, возможно, спросит, какое именно отношение система статистики посещаемости сайтов Google Analytics имеет к мобильным приложениям? Что вообще позволяет сделать Google Analytics для сбора статистики по использованию мобильного приложения?

Прежде всего, с помощью этой системы можно отслеживать переходы пользователя к тому или иному view controller’у. Это сделано полностью по аналогии с просмотром веб-страниц сайта, на котором установлен код Google Analytics. Кроме того, SDK системы позволяет отслеживать произвольные события, информация о которых может передаваться в админку сервиса в определенном формате, а также, отслеживать совершение встроенных покупок (in-app purchase).

Подготовка аккаунта Google Analytics

Для начала нам понадобится аккаунт в Google Analytics. Если вы еще не зарегистрированы в этом сервисе Google, переходим по этой ссылке и нажимаем оранжевую кнопку в правом верхнем углу - Зарегистрироваться.

Войдя в свой аккаунт переходим на вкладку Администратор и в левой части окна в выпадающем списке Аккаунт выбираем Создать аккаунт. Далее следуем инструкциям из достаточно подробной документации. В моем примере я использовал в качестве названия аккаунта Google Analytics Test App (в выпадающем списке мое приложения обозначено единичкой), а в качестве названия ресурса (приложения) - GATestApp.

Google Analytics Image 1

Рис. 1. Общий вид аккаунта мобильного приложения в Google Analytics.


Обратите внимание на выделенный на рисунке пункт 2 - именно там находится уникальный идентификатор приложения, который мы будем использовать для нашего приложения чуть дальше.

Далее необходимо загрузить iOS SDK. В моем случае это был SDK версии 3.03c.

Google Analytics Image 2

Рис. 2. Google Analytics iOS SDK.


Вот мы и добрались до iOS

После этого создаем простое тестовое приложение с одним view controller’ом (я назвал свое приложение GATestApp). В него необходимо добавить из загруженного архива файлы, перечисленные на рис. 3 в рамке с цифрой 1. После добавления указанных файлов, необходимо добавить ссылки на фреймворки, указанные на рис. 3 в рамке с цифрой 2.

Google Analytics Image 1

Рис. 3. Добавленные файлы (1) и фреймворки (2) iOS SDK.


Далее приводим AppDelegate.h к виду:

#import <UIKit/UIKit.h>
#import "GAI.h"

@interface GATAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) id<GAITracker> tracker;

@end

Файл реализации AppDelegate.m приводим к следующему виду:

#import "GATAppDelegate.h"

/** Google Analytics configuration constants **/
static NSString *const kGaPropertyId = @"UA-XXXX-1"; // Идентификатор приложения.
static BOOL const kGaDryRun = NO;
static int const kGaDispatchPeriod = 30;

@implementation GATAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    /// Инициализируем Google Analytics
    [self initializeGoogleAnalytics];
    
    return YES;
}

- (void)initializeGoogleAnalytics {
    [[GAI sharedInstance] setDispatchInterval:kGaDispatchPeriod];
    [[GAI sharedInstance] setDryRun:kGaDryRun];
    self.tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId];
}

@end

Данный код создает на уровне делегата приложения объект трекера типа id<GAITracker>. Далее при старте приложения мы призводим настройку синглтона трекера Google Analytics в методе - initializeGoogleAnalytics.

Параметр kGaPropertyId отвечает за уникальный идентификатор приложения, который мы получили ранее. Параметр kGaDryRun нужен для того, чтобы во время разработки приложения данные не отсылались в Google Analytics и не портили реальную статистику (значение YES, значение NO используется в продакшене). Параметр kGaDispatchPeriod отвечает за интервал отправки данных. По умолчанию данные отправляются каждые 120 секунд, в нашем примере мы установили этот параметр на 30 секунд.

Дальше представим, что мы хотим отслеживать переход пользователя к определенному view controller’у - в нашем случае, к единственному созданному нами GATViewController. Для этого приводим GATViewController.m к следующему виду:

#import "GATViewController.h"
#import "GAI.h"
#import "GAIFields.h"
#import "GAITracker.h"
#import "GAIDictionaryBuilder.h"

@implementation GATViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; // 1
    [tracker set:kGAIScreenName value:@"Screen Alpha"];             // 2
    [tracker send:[[GAIDictionaryBuilder createAppView] build]];    // 3
}

@end

В приведенном примере строчка с единицей создает ссылку на объект трекера. Во второй строке мы задаем имя для данного view controller’а (в нашем случае Screen Alpha), которое как раз и будет отображаться в админке Google Analytics при просмотре статистики пользования приложением. Третья строка необходима для отправки данных о просмотренном экране.

Теперь можно запустить получившееся приложение и открыть в Google Analytics вкладку обзора приложения в режиме реального времени. Мы получим нечто, похожее на рис. 4. В нашем примере я последовательно запустил приложение 5 раз, что видно на левом графике в виде 5 последовательных столбцов.

Google Analytics Image 4

Рис. 4. Статистика тестового приложения в режиме реального времени.


Общая сводка статистики по приложению получилась как на рис. 5.

Google Analytics Image 5

Рис. 5. Экран общей статистики по тестовому приложению.


Из общей сводки видно, что в приложении появился 1 новый пользователь, он заходил из России с использованием iPhone.

Заключение

Google Analytics представляет собой довольно интересный продукт для отслеживания статистики использования мобильных приложений. К преимуществам можно смело отнести относительную простоту его интеграции в iOS-приложение.

Тем не менее, продукт обладает и некоторыми недостатками:

  1. Небрежно составленная документация: полное отсутствие единого стиля вызовов трекера и синтаксические ошибки в коде (да-да, я и не знал, что такое возможно в случае такой солидной компании как Google - обратите внимание хотя бы на двоеточие в методе - (void)initializeGoogleAnalytics: { из последнего примера на этой странице).
  2. Громоздкость интерфейса админки. Серьезно. Я все понимаю, сервис мощный и богатый, но зачем же так издеваться над пользователями?

Тем не менее, я настоятельно рекомендую всем желающим ознакомиться с документацией по iOS SDK для Google Analytics.