我已将最新的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个没有发送给谷歌,我也不知道为什么。我在网上搜索过,但没有人遇到过这个问题。我想如果有人熟悉这个问题,那就是堆栈溢出。
请帮帮我。 谢谢!
答案 0 :(得分:19)
前段时间我遇到了同样的问题。我打赌你没有在你的覆盖中调用以下方法:
[super viewDidLoad]
覆盖中的-(void)viewDidLoad
您的[super viewDidAppear:animated]
覆盖-(void)viewDidAppear:(BOOL)animated
您的[super viewDidUnload]
覆盖-(void)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属性。
答案 1 :(得分:15)
我使用的是3.02版,遇到了同样的问题。以下解决了我的问题:
-(void) viewDidAppear:(BOOL)animated {
self.screenName = @"My Screen"; // set screenName prior to calling super
[super viewDidAppear:animated];
...
}
您肯定想要致电super
,因为它会触发发送ga数据。在我看来,screenName
需要在它之前设置。
答案 2 :(得分: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"];
这样做之后,它完美地运作了。
答案 3 :(得分:2)
所以,我找到了这个问题的答案:
在标题中添加:#import "GAI.h"
现在在viewDidLoad:
添加self.trackedViewName = @"Some Name";
比这样做:
[GAI sharedInstance] defaultTracker];
还添加以下内容:
[self.tracker sendView:@"Some Name"];
比它能正常工作。
答案 4 :(得分:0)
所以..这是为了那里的小说..(包括我自己)..
这可能是一个愚蠢的想法,但对我来说,在你调用设置屏幕名称之后,确实会出现愚蠢的超级视图[super viewDidAppear:animated]; 。
另外,我只是一个iOS用户,但是当我查看gaitrackedviewcontroller.h时,要设置的最新屏幕名称是,屏幕名称不是trackedviewname。所以,这就是我的样子:
(void)viewDidAppear:(BOOL)动画{
self.screenName = @"登录屏幕&#34 ;;
[super viewDidAppear:animated];
}
祝你好运。希望这有助于任何人。保持优雅。答案 5 :(得分:0)
在 3.10 环境中,我遇到了类似的问题。我尝试过其他的方式,但没有希望。最后,我发现ANSWER不在官方指示之外。
添加两行后,它可以正常工作。
NSDictionary *appDefaults = @{kAllowTracking: @(YES)};
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
官方说明并未提及我们需要在默认情况下注册kAllowTraking。