在尝试实现适用于iOS的Google Analytics SDK时,我遇到了两堵砖墙。
第一个是在执行此代码后application:DidFinishLaunchingWithOptions:
[[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-XXXXXXX-YY"
dispatchPeriod:10
delegate:self];
[[GANTracker sharedTracker] setDebug:YES];
..然后尝试跟踪任何内容或调用dispatch
,不会记录任何调试消息。我在跟踪呼叫之前和之后添加了NSLog
行,并且肯定已到达代码。
其次,当我尝试进行手动调度时,它会返回NO
。我在网上看到的所有其他问题都是dispatch
返回YES
但不知何故没有正确通过的地方。如果dispatch
真的返回NO
怎么办?
我尝试添加对跟踪方法的NSError *
引用,并且这些方法实际上成功了(没有错误,函数返回YES
(。但这些事件绝对不会定期发送,因为我们在超过 24 小时后在 GA 帐户上看不到任何内容。
编辑:我在两个委托方法(hitDispatched:
和trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:
(中也有NSLog
调用,但这两个方法都没有被调用。
我认为您应该检查一下以委托GANTracker的方法
- (void)trackerDispatchDidComplete:(GANTracker *)tracker
eventsDispatched:(NSUInteger)hitsDispatched
eventsFailedDispatch:(NSUInteger)hitsFailedDispatch{
//print or check number of events failed or success
}
//Delegate is set to 'nil' instead of class instance which implements the delegate methods.
[[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-XXXXXXX-YY"
dispatchPeriod:10
delegate:nil];
在您的情况下,假设UIApplicationDelegate可能正在实现GANTrackerDelegate,则消息调用应将委托设置为"self"。
干杯!!
阿马尔。
调度可能依赖于调用线程的运行循环 - 您是否可能从辅助线程运行它,当调度应该回电时,该线程可能不存在?
你还没有启用dryRun吗?仔细检查:
[[GANTracker sharedTracker] setDryRun:NO];
还可以尝试 dispatchSync,它会在发送时阻塞,但如果事情不在同一线程上,可能会有所帮助:
[[GANTracker sharedTracker] dispatchSynchronous];
只是从头开始检查了它,调度完美有效的含义
a(您的设备有些不同(我仍然在Apple测试人员未解决的特定iPad的3上遇到未解决的崩溃,因此这不会是一个巨大的惊喜(
b(你的代码在某种程度上是不同的 - 这对你来说更容易修复。
对于
a(没有建议,只能针对您可能获得的所有设备对其进行测试,对于b(我只能说什么对我有用:
- 在此处下载 1.4 SDK
- 获得谷歌示例项目与
git clone https://code.google.com/p/google-mobile-dev.analytics-end-to-end/
- 配置最终/分析示例以启动,稍微更改了源
:::从样本调用,应用程序手动重新启动,因为需要调度呼叫的时间段为零(
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[GANTracker sharedTracker] startTrackerWithAccountID:kGANAccountId
dispatchPeriod:0
delegate:self];
NSLog(@"Dispatch%@", [[GANTracker sharedTracker] dispatch] ? @"ed Successfully": @" Failed");
[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];
return YES;
}
就是这样,日志说Dispatched Successfully
,我猜值得一试。
咳嗽
我在应用程序委托中错误地拼写了启动跟踪器对象的#define
。其他文件的拼写正确,因此显示了日志记录语句,但是当我尝试在跟踪器启动之前进行记录时,它没有显示。
哎呀。好吧,至少现在在SO上有一个不错的Google Analytics故障排除帖子!