用于 IOS 的谷歌分析 SDK 不再跟踪屏幕或事件。曾经工作
Posted
技术标签:
【中文标题】用于 IOS 的谷歌分析 SDK 不再跟踪屏幕或事件。曾经工作【英文标题】:google analytics SDK for IOS not tracking screens or events anymore. used to work 【发布时间】:2015-05-06 16:09:38 【问题描述】:几个月前,我下载了适用于 ios 的最新版本的谷歌分析 SDK,以尝试对我的应用进行跟踪分析。我按照所有说明,下载了 SDK,删除了代码,创建了谷歌分析帐户和相应的属性及其各自的报告视图,插入了跟踪代码,一切都很好。 (这是我正在做的事情,还没有准备好投入生产,所以我们没有让它上线)。
我搁置了几个月,然后最近恢复了我编写的代码,出于某种原因,谷歌分析似乎不再跟踪我所在的屏幕,也不再跟踪我所写的事件跟踪。
我打开了详细日志记录,这就是我现在从控制台获得的所有信息。每次我向谷歌分析发送有关屏幕视图或事件的数据时,我都会获得大量信息。
谷歌分析控制台输出:
详细:GoogleAnalytics 3.11 +[GAITrackerModel 初始化] (GAITrackerModel.m:88):缺少 idfa 类,不会收集 idfa
此错误消息无关紧要,因为我没有在我的应用中展示任何广告
信息:GoogleAnalytics 3.11 -[GAIReachabilityCheckerreachabilityFlagsChanged:] (GAIReachabilityChecker.m:159):可达性标志更新:0X000002
我相信此状态代码表明我能够访问谷歌分析
信息:GoogleAnalytics 3.11 -[GAIBatchingDispatcher hitsForDispatch] (GAIBatchingDispatcher.m:368):没有待处理的命中。
不太确定这意味着什么,但在显示此消息后,每当我尝试向其发送屏幕数据或事件数据时,我都不会从 Google Analytics 获得更多反馈
这是我在应用委托类中的代码:
// setup google analytics
// 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;
[[GAI sharedInstance] setDryRun:NO];
// Optional: set Logger to VERBOSE for debug information.
[[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose];
// Initialize tracker. Replace with your tracking ID.
[[GAI sharedInstance] trackerWithTrackingId:@"mytrackingIDgoeshere"];
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
tracker.allowIDFACollection = NO;
NSString *version = [[NSBundle mainBundle] `objectForInfoDictionaryKey:@"CFBundleShortVersionString"];`
[tracker set:kGAIAppVersion value:version];
[tracker set:kGAISampleRate value:@"50.0"];
这是我用来手动发送屏幕和事件数据的代码。 其中一些已被删除以使其通用,以不透露有关我的应用程序的个人信息。
// MANUALLY STARTING A SESSION:
// start session
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
// You only need to set User ID on a tracker once. By setting it on the tracker, the ID will be
// sent with all subsequent hits.
[tracker set:@"&uid"
value:self.sessionID];
[tracker send:[[GAIDictionaryBuilder
createEventWithCategory:@"User ID"
action:@"User Starts Session"
label:deviceLabel
value:nil] build]];
GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
[builder set:@"start" forKey:kGAISessionControl];
[tracker set:kGAIScreenName value:vcName];
[tracker send:[builder build]];
// MANUALLY ENDING A SESSION:
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
[builder set:@"end" forKey:kGAISessionControl];
[tracker set:kGAIScreenName value:vcName];
[tracker send:[builder build]];
// MANUALLY SENDING SCREEN VIEW INFO TO GA
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
[tracker set:kGAIScreenName value:sceneName];
[tracker send:[[GAIDictionaryBuilder createScreenView]build]];
// EXAMPLE CODE OF MANUALLY SENDING EVENT DATA TO GA
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
[tracker set:kGAIScreenName value:sceneName];
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" action:@"table_row_selected" label:rowTitle value:nil]build]];
[tracker set:kGAIScreenName value:nil];
就是这样。这一切都过去了,我一遍又一遍地翻阅文档,似乎没有任何问题。
如何解决此问题?
感谢您的宝贵时间。
更新: 我创建了一个带有不同跟踪代码的新属性来跟踪其他类型的信息(基本上我现在在我的应用程序中使用多个跟踪器),现在无论出于何种原因,我使用的旧跟踪器不再工作,尽管我试试看,但我用来记录网络信息的另一个跟踪器,即网络服务调用等确实有效。我老实说,在这一点上这是一个谷歌的事情。我不明白为什么它可以工作,而现在却不行。我根本没有更改与原始属性或跟踪信息相关的任何内容。
【问题讨论】:
【参考方案1】:好的,我找到了解决方案。我创建了一个全新的 gmail 帐户来进行分析,并创建了一个新报告并将其链接到我的应用程序,并且由于某种原因解决了它。
【讨论】:
对我来说,帐户的“类型”设置为“网站”。如果您尝试在 iOS 或 android 上捕获屏幕分析,则应将其指定为移动应用程序。以上是关于用于 IOS 的谷歌分析 SDK 不再跟踪屏幕或事件。曾经工作的主要内容,如果未能解决你的问题,请参考以下文章
如何创建跟踪 JavaScript 代码,如基于 Javascript 的谷歌分析?