v3 SDK更新后,Google Analytics减少了会话跟踪
我在我的应用程序中使用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进入视图之前是否有从管理员设置更改会话超时的function?
或者我能做些什么来解决这个或背后的原因???
我发现我的平均会话时间是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上创建新的app属性。 有了新房产,一切都像以前一样。 祝你好运!
- CCSprite:batched sprites应该使用与batchnode相同的纹理吗?
- 如何使用UNNotificationPresentationOptions
- 在代码中修改故事板自动布局约束的最佳做法?
- 从iOS设备通过POST方法将数据插入远程mysql数据库
- 添加一个图标(Mac&PC)与Cocoa文件
- SWIFT:错误“线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)”是什么意思?
- UIDeviceBatteryStateDidChangeNotification不适用于iOS 8
- 这个NumberPad键盘什么时候能解决? – 帮帮我!
- 缩放UIScrollView contentSize以适应具有可变高度的UITableView的UIView