繁体   English   中英

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

[英]Google Analytics won't track a view on 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];

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

self.trackedViewName = @"Main Menu Screen";

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

请帮我。 谢谢!

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

  1. 你的-(void)viewDidLoad覆盖中的[super viewDidLoad]
  2. 你的-(void)viewDidAppear:(BOOL)animated覆盖中的[super viewDidAppear:animated]
  3. 你的-(void)viewDidUnload覆盖中的[super 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
}

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

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

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

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

   ...
}

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

用最简单的方法解决了这个问题。

我写的代码是针对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"];

在这之后,它完美地工作。

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

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

现在在viewDidLoad中:

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

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

  3. 另外添加: [self.tracker sendView:@"Some Name"];

比它会工作得很好。

所以..这是为那里的小说..(我自己包括在内)..

这可能是一个愚蠢的想法,但对我来说,愚蠢的超级视图确实出现了[super viewDidAppear:animated]; 在您打电话设置屏幕名称后。

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

  • (void)viewDidAppear:(BOOL)animated {

    self.screenName = @“登录屏幕”;

    [super viewDidAppear:animated];

}

祝好运。 希望这有助于任何人。 保持优雅。

3.10环境中,我遇到了类似的问题。 我尝试过其他的方式,但没有希望。 最后,我发现ANSWER不在官方指令之外。

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

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

官方说明没有提到我们需要在默认情况下注册kAllowTraking。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM