问题
在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问题跟踪器