![](/img/trans.png)
[英]Google Analytics for Mobile Apps iOS SDK v3 event tracking
[英]Google Analytics Reduced Session Tracking after v3 SDK update
我在应用程序中使用Google Analytics(分析)来跟踪事件和会话 。
较早的分析版本为v2.x,现在我将其版本更新为v3,我可以看到会话跟踪方面存在重大差异。
我研究并找到了从v2.x到v3的迁移文档链接:
迁移文档指出该会话是在v2.x中自动创建的,但是我们必须在v3中手动创建它。 我尝试使用代码在应用启动时手动创建会话,但是会话跟踪仍然存在很大差异。
static NSString const *kGaPropertyId = @"UA-XXXX-Y";
id tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId];
[tracker send:[[[GAIDictionaryBuilder createEventWithCategory:@"UX"
action:@"appstart"
label:nil
value:nil] set:@"start" forKey:kGAISessionControl] build]];
任何人都不知道在v3出现之前是否可以通过管理员设置更改会话超时的功能?
或任何我能解决的原因或背后的原因???
我发现自己的平均会话时间为8分钟后就开始解决此问题,在那里我有一个播放电影的应用程序,并且您期望平均会话时间更长。
我完成了以下实现:
[[NSNotificationCenter defaultCenter] addObserver:[GATracking class] selector:@selector(startTrackingSession) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:[GATracking class] selector:@selector(endTrackingSession) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:[GATracking class] selector:@selector(endTrackingSession) name:UIApplicationWillTerminateNotification object:nil];
这些观察员处理会话的开始和结束。 会话将在应用程序处于活动状态时开始,并在应用程序进入后台或被终止时停止。
这是开始和结束跟踪会话的代码。 结束是在后台任务中进行的,以确保结束呼叫在进入非活动状态之前被调度到Google Analytics(分析)。 否则,它将是下次启动的时间表。
+ (void)startTrackingSession
{
[GAI sharedInstance].dispatchInterval = 20;
// Initialize tracker.
id tracker = [[GAI sharedInstance] defaultTracker];
[tracker send:[[[GAIDictionaryBuilder createEventWithCategory:@"application_events"
action:@"application_session_start"
label:nil
value:nil] set:@"start" forKey:kGAISessionControl] build]];
// Set this after the session start has been sent. Only needs to be set once but you must be sure that two starts are not sent in a row or you will end up with 0:00:00 sessions.
[tracker set:kGAISessionControl
value:nil];
[[GAI sharedInstance] dispatch];
}
+ (void)endTrackingSession
{
id tracker = [[GAI sharedInstance] defaultTracker];
// Call when the session ends.
[tracker send:[[[GAIDictionaryBuilder createEventWithCategory:@"application_events"
action:@"application_session_end"
label:nil
value:nil] set:@"end" forKey:kGAISessionControl] build]];
[tracker set:kGAISessionControl
value:nil];
[self dispatchUsingBackgroundTask];
}
+ (void)dispatchUsingBackgroundTask
{
// As the end tracking session gets called when entering background, run it in a background task to make sure it gets dispatched
UIApplication *app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[GAI sharedInstance] dispatch];
double dispatchTimeout = 10.0; // 10 seconds timeout
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(dispatchTimeout * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
});
}
重要部分,如果您仍然看到最多30分钟的跟踪会话,请在媒体资源的管理部分中更改此设置:
如果您没有看到此设置,则可能不是在使用Universal Analytics。 要确定您是否这样做,请查看以下链接: https : //support.google.com/analytics/answer/3450662?hl=zh_CN
有一个非常相同的问题。 最后在Google Analytics(分析)上创建了新的应用程序属性。 有了新的属性,一切都会像以前一样工作。 祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.