iOS 上的 Google Analytics 在调度时返回 NO,没有调试输出



在尝试实现适用于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/
  • 配置最终/分析示例以启动,稍微更改了源
(trackEvent::::

:::从样本调用,应用程序手动重新启动,因为需要调度呼叫的时间段为零(

- (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故障排除帖子!

相关内容

最新更新