用于 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 不再跟踪屏幕或事件。曾经工作的主要内容,如果未能解决你的问题,请参考以下文章

使用适用于 iOS 的谷歌地图 SDK 进行标记聚类?

如何创建跟踪 JavaScript 代码,如基于 Javascript 的谷歌分析?

文档重新:在 iOS 上混合 Web 和移动应用 Google Analytics ID?

phonegap 应用上的谷歌分析

谷歌分析在 ios 崩溃前的最后一个屏幕

如何为子域添加单独的谷歌分析