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个没有发送给谷歌,我不知道为什么。 我在网上搜索过,但没有人遇到过这个问题。 我想如果有人熟悉这个问题,那就是堆栈溢出。
请帮帮我。 谢谢!
前段时间我遇到了同样的问题。 我打赌你没有在你的覆盖中调用以下方法:
- 你的
-(void)viewDidLoad
覆盖中的[super viewDidLoad]
- 你的
-(void)viewDidAppear:(BOOL)animated
覆盖中的[super viewDidAppear:animated]
- 你的
-(void)viewDidUnload
覆盖中的[super viewDidUnload]
- …(处理从
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版开始,应在调用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中:
-
添加
self.trackedViewName = @"Some Name";
-
比这样做:
[GAI sharedInstance] defaultTracker];
-
另外加上这个:
[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。