Google Analytics不会跟踪iOS上的视图?

Yos*_*far 6 google-analytics objective-c ios

我已将最新的Google AnalyticsSDK添加到我的iOS应用程序(版本2.0 beta 4)中.我做了与导游说的相同,并将此代码添加到app delegate:

// 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];
Run Code Online (Sandbox Code Playgroud)

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

self.trackedViewName = @"Main Menu Screen";
Run Code Online (Sandbox Code Playgroud)

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

请帮我.谢谢!

who*_*9vy 19

前段时间我遇到了同样的问题.我打赌你没有在你的覆盖中调用以下方法:

  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
}
Run Code Online (Sandbox Code Playgroud)

最重要的方法是viewDidLoad,viewDidAppear:特别是对于实时跟踪viewDidAppear:此视图当前可见的节目.

编辑:从Google Analytics SDK 3.0版开始,应在调用viewDidLoadsuper方法之前设置screenName属性.


Sea*_*ean 15

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

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

   ...
}
Run Code Online (Sandbox Code Playgroud)

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


Yos*_*far 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];
Run Code Online (Sandbox Code Playgroud)

在视图控制器内部viewDidLoad

[GAI sharedInstance] defaultTracker];
[self.tracker sendView:@"Some name"];
Run Code Online (Sandbox Code Playgroud)

这样做之后,效果非常完美。

  • 是的,我知道,我为每个将使用 sdk 3 尝试您的解决方案的人写了评论。 (2认同)