6

我已将最新的 Google Analytics SDK 添加到我的 iOS 应用程序(版本 2.0 beta 4)。我按照指南所说的做了同样的事情,并将此代码添加到应用程序委托中:

// Optional: automatically send uncaught exceptions to Google Analytics.
[GAI sharedInstance].trackUncaughtExceptions = YES;
// Optional: set Google Analytics dispatch interval to e.g. 20 seconds.
[GAI sharedInstance].dispatchInterval = 20;
// Optional: set debug to YES for extra debugging information.
[GAI sharedInstance].debug = YES;
// Create tracker instance.
self.tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-TRACKINGID-2"];//UA-33873963-13 - My testing google analytics trackingId

[self.tracker setSessionStart:YES];
[self.tracker setSessionTimeout:60];

现在,在每个视图上我都添加了这个:

self.trackedViewName = @"Main Menu Screen";

一切正常,但出于某种原因,20 个屏幕中有 3 个没有将自己发送到 Google,我不知道为什么。我在网上搜索过,但没有人遇到过这个问题。我想如果有人熟悉这个问题,那就是堆栈溢出。

请帮我。谢谢!

4

6 回答 6

20

前段时间我遇到了同样的问题。我敢打赌,您不会在覆盖中调用以下方法:

  1. [super viewDidLoad]在你的-(void)viewDidLoad覆盖
  2. [super viewDidAppear:animated]在你的-(void)viewDidAppear:(BOOL)animated覆盖
  3. [super viewDidUnload]在你的-(void)viewDidUnload覆盖
  4. ...(注意您要覆盖的所有其他方法GAITrackedViewController

具体来说,您的方法应如下所示:

-(void)viewDidLoad
{
  // call this at the beginning of the overridden methods
  self.screenName = @"Some Name"; 
  [super viewDidLoad];

  // your remaining code here
}

-(void)viewDidAppear:(BOOL)animated
{
  [super viewDidAppear:animated];

  // your remaining code here
}

最重要的方法是viewDidLoad并且viewDidAppear:因为特别是对于实时跟踪viewDidAppear:显示该视图当前可见的显示。

编辑:自 Google Analytics SDK 3.0 版以来,应在调用viewDidLoadsuper 方法之前设置 screenName 属性。

于 2013-02-19T09:46:06.633 回答
15

我使用的是 3.02 版,遇到了同样的问题。以下解决了我的问题:

-(void) viewDidAppear:(BOOL)animated {
   self.screenName = @"My Screen"; // set screenName prior to calling super
   [super viewDidAppear:animated];

   ...
}

你肯定想打电话super,因为它会触发发送 ga 数据。在我看来,screenName需要在它之前设置。

于 2013-12-17T21:43:48.800 回答
4

问题已经用最简单的方法解决了。

我写的代码是针对AppDelegate. 使用跟踪 ID 初始化跟踪器后,您只需在使用它的每个视图中调用它。(我不确定,但无论如何它对我有用。)

所以,在AppDelegate

// Optional: automatically send uncaught exceptions to Google Analytics.
[GAI sharedInstance].trackUncaughtExceptions = YES;
// Optional: set Google Analytics dispatch interval to e.g. 20 seconds.
[GAI sharedInstance].dispatchInterval = 20;
// Optional: set debug to YES for extra debugging information.
[GAI sharedInstance].debug = YES;
// Create tracker instance.
self.tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-TRACKINGID-2"];//UA-33873963-13 - My testing google analytics trackingId

[self.tracker setSessionStart:YES];
[self.tracker setSessionTimeout:60];

在视图控制器内部viewDidLoad

[GAI sharedInstance] defaultTracker];
[self.tracker sendView:@"Some name"];

这样做之后,它工作得很好。

于 2013-03-07T11:32:46.683 回答
2

所以,我找到了这个问题的答案:

在标题中添加:#import "GAI.h"

现在在 viewDidLoad 中:

  1. 添加self.trackedViewName = @"Some Name";

  2. 比这样做: [GAI sharedInstance] defaultTracker];

  3. 还要添加这个: [self.tracker sendView:@"Some Name"];

比它工作得很好。

于 2013-02-19T13:47:12.163 回答
0

所以..这是给那里的菜鸟的..(包括我自己)..

这可能是一件愚蠢的事情,但对我来说,愚蠢的超级视图确实出现了 [super viewDidAppear:animated]; 在您调用设置屏幕名称后。

顺便说一句,我只是一个 iOS 用户,但是当我查看 gaitrackedviewcontroller.h 时,要设置的最新屏幕名称是,屏幕名称不是 trackedviewname。所以,这就是我的样子:

  • (void)viewDidAppear:(BOOL)animated {

    self.screenName = @"登录界面";

    [超级 viewDidAppear:动画];

}

祝你好运。希望这对任何人都有帮助。保持优雅。

于 2014-01-25T23:12:10.347 回答
0

3.10环境中,我遇到了类似的问题。我尝试过其他人的方式,但没有希望。最后,我发现答案在官方说明之外。

添加两行后,它可以工作。

 NSDictionary *appDefaults = @{kAllowTracking: @(YES)};
 [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];

官方说明没有提到我们需要在默认值中注册 kAllowTraking。

于 2015-02-25T03:41:09.503 回答