Google Analytics不会跟踪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 eg 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 eg 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。