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

时间:2012-05-17 01:46:32

标签: ios google-analytics

在尝试实施适用于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帐户上看不到任何内容。

编辑:我在两个委托方法(NSLoghitDispatched:)中都进行了trackerDispatchDidComplete:eventsDispatched:eventsFailedDispatch:次调用,而且这些方法都没有被调用任

6 个答案:

答案 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)我只能说出对我有用的东西:

  • 已下载1.4 SDK here
  • 使用git clone https://code.google.com/p/google-mobile-dev.analytics-end-to-end/
  • 获取了Google示例项目
  • 配置了final / AnalyticsSample以启动,稍微更改了源

(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问题排查帖!