v3 SDK更新后,Google Analytics减少了会话跟踪

时间:2014-08-13 12:51:08

标签: ios objective-c google-analytics tracking google-analytics-api

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

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

我研究并发现了 v2.x到v3 迁移文档link:

迁移文档指出会话是在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进入视图之前是否有从管理员设置更改会话超时的功能?

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

2 个答案:

答案 0 :(得分:3)

我发现我的平均会话时间是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分钟的跟踪会话,请在您的媒体资源的管理部分更改此设置: 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

答案 1 :(得分:-2)

有一个同样的问题。最后在Google Analytics上创建新的app属性。有了新房产,一切都像以前一样。祝你好运!