3

我正在我的 iPhone 应用程序中实现 google Analytics SDK。我让它使用以下代码:

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。

我巧妙的计划是创建第一个 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 是否发出了两个不同的请求,但似乎我无法调用我的委托方法!删除第二个跟踪器的代码也无济于事

所以,我的问题是:如何实现 2 个 gAnalytics 帐户以及如何让我的委托方法完成它应该做的事情 - 在调度后被调用 :)

在此先感谢,卢卡

4

2 回答 2

2

我一开始的要求完全一样,就是能够将浏览量、事件等发布到两个不同的 Google Analytics 帐户上。但问题是,[GANTracker sharedTracker] 是一个单例对象,你总是得到相同或单一的对象实例,所以你不能真正拥有两个 sharedTracker 实例。

同样在您的情况下,如果您尝试查看是否调用了回调方法,则不会调用它,因为您正在调用 [[GANTracker sharedTracker] stopTracker] ,这将阻止事件的调度发生。如果你注释掉那一行,你的回调方法应该被调用。

如果您查看 Documents 下的 app 目录,Google 分析会将所有数据存储在名为 googleanalytics.sql 的 sqlite 数据库中。您可以打开它并查看其中的表格。转到该目录并键入“sqlite3 googleanalytics.sql”,如果您知道 sqlite 命令,则可以浏览表格和内容。这些表都没有对帐户 ID 的引用,所以我的猜测是,除非你做一些非常聪明的怪癖,否则你不能真正发布到两个不同的帐户。

于 2011-08-30T17:46:32.237 回答
0

Google 在其iOS SDK v2中支持在同一应用程序中使用多个跟踪帐户

看到这个 SO question 和我的回答。

于 2012-10-28T11:22:37.037 回答