Ios Google Analytics在v3 SDK更新后减少了会话跟踪
我在应用程序中使用谷歌分析跟踪事件和会话 早期的analytics版本是v2.x,现在我已经将其版本更新为v3,我可以看到会话跟踪有很大的不同 我研究并发现了这个从v2.x到v3的迁移文档 迁移文档声明会话是在v2.x中自动创建的,但我们必须在v3中手动创建它。我尝试在应用程序启动时使用代码手动创建会话,但在会话跟踪方面仍然存在很大差异Ios Google Analytics在v3 SDK更新后减少了会话跟踪,ios,objective-c,google-analytics,tracking,google-analytics-api,Ios,Objective C,Google Analytics,Tracking,Google Analytics Api,我在应用程序中使用谷歌分析跟踪事件和会话 早期的analytics版本是v2.x,现在我已经将其版本更新为v3,我可以看到会话跟踪有很大的不同 我研究并发现了这个从v2.x到v3的迁移文档 迁移文档声明会话是在v2.x中自动创建的,但我们必须在v3中手动创建它。我尝试在应用程序启动时使用代码手动创建会话,但在会话跟踪方面仍然存在很大差异 static NSString const *kGaPropertyId = @"UA-XXXX-Y"; id tracker = [[GAI shar
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出现之前,是否有从管理员设置更改会话超时的功能吗
或者我能做些什么来解决这个问题或者背后的原因???也有同样的问题。最终在Google Analytics上创建了新的应用程序属性。有了新的财产,一切都像以前一样运转。祝你好运 当我发现我的平均会话时间是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。若要了解您是否这样做,请签出此链接:此新属性将进行哪些更改?它会创建一个新的跟踪id吗?这是应用程序的新跟踪id:)但为什么我刚刚更新了SDK,这会对会话产生影响。我真的不知道,我已经尝试让它工作了很多小时,然后我刚刚创建了一个新的跟踪id,现在可以工作了。但这不是理想的解决方案,对我来说也不起作用。还有什么我可以研究的吗?