我正在我的 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。
我巧妙的计划是创建第一个共享跟踪器,调度它,停止它,并对第二个共享跟踪器执行相同的操作:
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?");
}
我添加了委托(delegate)方法,以便了解正在分派(dispatch)的内容,并查明 SDK 是否发出两个不同的请求,但似乎我无法调用我的委托(delegate)方法! 删除第二个跟踪器的代码也没有帮助 我还尝试将调度周期设置为 0(以及手动调度调用的 -1),但我也没有运气......
所以,我的问题是: 如何实现 2 个 gAnalytics 帐户以及 如何让我的委托(delegate)方法做它应该做的事情 - 在调度后被调用:)
提前致谢, 卢卡
最佳答案
我一开始就提出了同样的要求,即能够将综合浏览量、事件等发布到两个不同的 Google Analytics 帐户上。但问题是,[GANTracker sharedTracker] 是一个单例对象,你总是得到该对象的相同或单个实例,因此你不能真正拥有两个 shareTracker 实例。
此外,在您的情况下,您试图查看回调方法是否被调用,它不会被调用,因为您正在调用 [[GANTracker sharedTracker] stopTracker],这将阻止事件的分派(dispatch)发生。如果您注释掉该行,则应该调用您的回调方法。
如果您查看“文档”下的应用程序目录,您会发现 Google Analytics 将所有数据存储在名为 googleanalytics.sql 的 sqlite 数据库中。您可以打开它并查看其中的表格。转到该目录并输入“sqlite3 googleanalytics.sql”,如果您知道 sqlite 命令,则可以导航表和内容。这些表都没有引用帐户 ID,所以我的猜测是,除非您做了一些非常聪明的怪事,否则您无法真正发布到两个不同的帐户。
关于iPhone Google Analytics SDK 委托(delegate)和多帐户问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325064/