在尝试实施适用于iOS的Google AnalyticsSDK时,我遇到了两个问题。
第一个是在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帐户上看不到任何内容。
编辑:我在两个委托方法(NSLog
和hitDispatched:
)中都进行了trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:
次调用,而且这些方法都没有被调用任
答案 0 :(得分:1)
我认为你应该检查这个以委托GANTracker的方法
- (void)trackerDispatchDidComplete:(GANTracker *)tracker
eventsDispatched:(NSUInteger)hitsDispatched
eventsFailedDispatch:(NSUInteger)hitsFailedDispatch{
//print or check number of events failed or success
}
答案 1 :(得分:1)
//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'。
干杯!!
阿玛尔。
答案 2 :(得分:1)
可能是调度依赖于调用线程的运行循环 - 你是否有可能从一个辅助线程运行它,一个在调度假设给你回电时可能不存在的线程?
答案 3 :(得分:1)
你没有启用dryRun吗?仔细检查:
[[GANTracker sharedTracker] setDryRun:NO];
同样尝试dispatchSynchronous,它会在发送时阻塞但如果事情不在同一个线程上可能有帮助:
[[GANTracker sharedTracker] dispatchSynchronous];
答案 4 :(得分:1)
刚从头开始检查,发送完美的工作意义
a)你的设备有些不同(我仍然没有解决特定iPad上未解决的崩溃问题,而苹果测试人员尚未解决,所以它不会是一个巨大的惊喜)
b)你的代码在某种程度上是不同的 - 这对你来说更容易修复。对于a),没有任何建议,只能针对你可能获得的所有设备进行测试,因为b)我只能说出对我有用的东西:
git clone https://code.google.com/p/google-mobile-dev.analytics-end-to-end/
(trackEvent :::::从样本调用,app手动重启,因为需要调度调用的零时间段)
- (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
,值得我猜。
答案 5 :(得分:0)
咳嗽
我拼错了#define
来启动我的app委托中的跟踪器对象。其他文件拼写正确,因此日志记录语句显示,但是当我在跟踪器启动之前尝试登录时它没有显示。
糟糕。好吧,至少现在有一个很好的Google Analytics问题排查帖!