iPhone Google Analytics SDK делегат и проблема с несколькими аккаунтами - PullRequest
3 голосов
/ 16 марта 2011

Я внедряю Google Analytics SDK в своем приложении для iPhone.Он работал со следующим кодом:

AppDelegate .m :

[[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-xxxxxxx-1"
                                       dispatchPeriod:10
                                             delegate:nil]; 


if (![[GANTracker sharedTracker] trackPageview:string withError:&error]) {

    NSLog(@"Error happened with google analytics tracking 2, %@", error);

}else {
    NSLog(@"OK");

}

В моем аккаунте аналитики я получал нужные результаты.Затем я решил (не спрашивайте меня, почему) попытаться отправить мои данные отслеживания также на второй аккаунт аналитики.Для любопытных: одна учетная запись используется для статистики веб-страниц и приложений iPhone, а другая предназначена только для iPhone.

Мой гениальный план состоял в том, чтобы создать 1-й sharedTracker, отправить его, остановить и сделать то же самое для второго:

AppDelegate .h:
@interface AppDelegate : NSObject <UIApplicationDelegate, GANTrackerDelegate>    

//implementation
AppDelegate .m:
//1st tracking account
[[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-xxxxxxx-1"
                                       dispatchPeriod:10
                                             delegate:self]; 


if (![[GANTracker sharedTracker] trackPageview:string withError:&error]) {

    NSLog(@"Error happened with google analytics tracking, %@", error);

}else {
    NSLog(@"1. GAnalytics: OK");

}

[[GANTracker sharedTracker] stopTracker];

//2nd tracking account
[[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-zzzzzzzz-1"
                                       dispatchPeriod:10
                                             delegate:self]; 


if (![[GANTracker sharedTracker] trackPageview:string withError:&error]) {

    NSLog(@"Error happened with google analytics tracking, %@", error);

}else {
    NSLog(@"2. GAnalytics: OK");

}

[[GANTracker sharedTracker] stopTracker];
- (void)trackerDispatchDidComplete:(GANTracker *)tracker
              eventsDispatched:(NSUInteger)eventsDispatched
          eventsFailedDispatch:(NSUInteger)eventsFailedDispatch{

NSLog(@"For the love of Got, why don't you say something?");
}

Я добавил метод делегата, чтобы получить некоторое представление о том, чтобыть отправленным и выяснить, выполняет ли SDK два разных запроса, но, похоже, я не могу вызвать мой метод делегата!Удаление кода второго трекера также не помогает. Я также попытался установить период отправки равным 0 (и -1 при вызове вручную), но мне тоже не повезло с этим…

Итак, мои вопросы: какреализовать 2 учетные записи gAnalytics и как заставить мой метод делегата делать то, что он должен делать - вызывать после dispatch:)

Заранее спасибо, Лука

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Я начал с того же требования - иметь возможность публиковать просмотры страниц, события и т. Д. В двух разных аккаунтах Google Analytics. Но проблема в том, что [GANTracker sharedTracker] является одноэлементным объектом, и вы всегда возвращаете один и тот же или единственный экземпляр объекта, поэтому вы не можете получить два экземпляра sharedTracker.

Также в вашем случае, когда вы пытаетесь увидеть, вызывается ли метод обратного вызова, он не будет вызван, потому что вы вызываете [[GANTracker sharedTracker] stopTracker], и это предотвратит отправку событий. Если вы закомментируете эту строку, ваш метод обратного вызова должен быть вызван.

Если вы загляните в каталог приложения в разделе «Документы», Google Analytics сохранит все данные в базе данных sqlite с именем googleanalytics.sql. Вы можете открыть его и увидеть таблицы в нем. Перейдите в этот каталог и введите «sqlite3 googleanalytics.sql», и если вы знаете команды sqlite, вы можете перемещаться по таблицам и тому подобному. Ни в одной из таблиц нет ссылки на идентификатор учетной записи, так что я предполагаю, что, если вы не сделаете несколько действительно умных ухищрений, вы не сможете действительно публиковать в двух разных учетных записях.

0 голосов
/ 28 октября 2012

Google поддерживает использование нескольких учетных записей отслеживания в одном приложении в своем iOS SDK v2

См. Этот вопрос и мой ответ там .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...