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

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

我在应用程序中使用谷歌分析跟踪事件和会话

早期的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出现之前,是否有从管理员设置更改会话超时的功能吗


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

也有同样的问题。最终在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,现在可以工作了。但这不是理想的解决方案,对我来说也不起作用。还有什么我可以研究的吗?