切换到"手动会话管理后的大量短期会话"使用谷歌分析iOS SDK

时间:2018-03-20 03:58:18

标签: ios session google-analytics

问题

在iOS上,我们使用通过Cocoapods集成的最新版Google Analytics SDK。最近我们切换到手动会话管理,如SDK docs中所述 在查看GA仪表板时,我们注意到平均值大幅下降。会议时间。这是因为现在我们看到大多数会话的长度在1到10秒范围内。

我们注意到的另一件事是有更多的"会议开始"屏幕视图比"会话结束"。请参阅下面的 startAppSession 方法,该方法用于使用screenView匹配来启动/结束会话。

后台抓取

我们的应用程序中有背景提取功能。这可能是问题吗?当我们使用SDKs自动会话管理/

时,我们排除了它的用法

application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

会话超时设置

我们的信息中心内的会话超时设置= 30分钟。

代码示例供参考

初始化Google iOS SDK的方法。

  func setup() {
        let gai = GAI.sharedInstance()
        gai.dispatchInterval = 30
        let customDimensionOS = GAIFields.customDimension(for: 1)  
        let tracker = gai.tracker(withName: "master", trackingId: masterTrackingId)!
        tracker.set(customDimensionOS, value: deviceOS())
    }    

开始/结束会话的方法。

func startAppSession(start:Bool) {
       let builder = GAIDictionaryBuilder.createScreenView()!
       tracker.set(kGAISessionControl, value: start ? "start" : "end")
       tracker.set(kGAIScreenName, value: start ? "Session Start" : "Session End")
       tracker.send(builder.build() as [NSObject : AnyObject])
       tracker.set(kGAISessionControl, value: nil)
} 

开始会话     来自didFinishLaunchingWithOptions& applicationDidEnterBackground

func onApplicationWillEnterForegroundNotification(_:Notification) {
        if let gai = GAI.sharedInstance() {
            gai.dispatchInterval = 30
        }
        sendAppSession(start: true)
       }
    }

结束会话来自applicationWillEnterForeground

    func onApplicationDidEnterBackgroundNotification(_:Notification) {

            sharedInstance.backgroundTask = UIApplication.shared.beginBackgroundTask(withName: "Analytics.EndTimedEvents") {
                UIApplication.shared.endBackgroundTask(sharedInstance.backgroundTask)
                sharedInstance.backgroundTask = UIBackgroundTaskInvalid
            }

            DispatchQueue.global().async {
                    sendAppSession(start: false)
                    UIApplication.shared.endBackgroundTask(sharedInstance.backgroundTask)
                    sharedInstance.backgroundTask = UIBackgroundTaskInvalid
                    GADispatch()            
            }
        }

一些相关的(但不是确切的)SO问题

Google Analytics iOS SDK “1 second sessions” (possibly background sessions?)

Session control with Google Analytics API v3 for iOS?

Google问题跟踪器

Significant percentage of app sessions as 1 second

0 个答案:

没有答案