gpt4 book ai didi

ios - v3 SDK 更新后 Google Analytics 减少了 session 跟踪

转载 作者:行者123 更新时间:2023-11-29 12:39:43 29 4
gpt4 key购买 nike

我在我的应用程序中使用 Google Analytics 来跟踪事件和 session

分析的早期版本是 v2.x,现在我已将其版本更新为 v3,我可以看到 session 跟踪方面存在重大差异。

我研究并找到了这个v2.x 到 v3 迁移文档 link:

迁移文档指出 session 是在 v2.x 中自动创建的,但我们必须在 v3 中手动创建它。我尝试使用代码在应用启动时手动创建 session ,但在 session 跟踪中仍然存在很大差异。

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 出现之前是否有从管理员设置更改 session 超时的功能?

或者我能做些什么来解决这个问题或背后的原因???

最佳答案

在我发现我的平均 session 时间为 8 分钟后,我开始解决这个问题,我有一个播放电影的应用程序,而您期望的平均 session 时间要长得多。

我最终得到了以下实现:

[[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];

这些观察者处理 session 的开始和结束。 session 将在应用程序激活时启动,并在应用程序进入后台或被终止时停止。

以下是开始和结束跟踪 session 的代码。结束发生在后台任务中,以确保结束调用在进入非事件状态之前被分派(dispatch)到 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 分钟的跟踪 session ,请在您媒体资源的管理部分更改此设置: Changing the session timeout property to a max of 4 hours to make sure your session length can get bigger then 30 minutes

如果您没有看到此设置,则您可能没有使用 Universal Analytics。要了解您是否这样做,请查看此链接:https://support.google.com/analytics/answer/3450662?hl=en

关于ios - v3 SDK 更新后 Google Analytics 减少了 session 跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286706/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com