美文网首页程序员
【螺号日历】iOS APP 追踪页面浏览时间

【螺号日历】iOS APP 追踪页面浏览时间

作者: haolisand | 来源:发表于2018-02-01 12:58 被阅读153次

背景

为了发现用户最关心的内容以便改进,可以统计用户浏览不同 View Controller 的时间。
貌似部分数据分析框架提供了自动追踪的功能,但很多辅助性质 View Controller 的使用情况并不关心,另外本
APP 采用的 Fabric Answers Events 并不支持该功能,所以需要自己针对重点页面进行支持。

实现分析

如何定义用户浏览的时间

用户浏览的时间为APP在前台时,View Controller 显示到消失的时间。
这里就和 APP 的状态及 View Controller 的状态相关。

APP 的状态

App State Changes

可见最重要的是 Inactive 和 Active 之间的部分,也就是 Inactive->Active->Inactive 中间的时间为用户浏览时间的大范围,也就是 applicationDidBecomeActive:applicationWillResignActive: 中间的时间。

  • 状态迁移的事件说明

    事件 说明
    applicationDidBecomeActive: Lets your app know that it is about to become the foreground app. Use this method for any last minute preparation.
    applicationWillResignActive: Lets you know that your app is transitioning away from being the foreground app. Use this method to put your app into a quiescent state.
    applicationDidEnterBackground: Lets you know that your app is now running in the background and may be suspended at any time.
    applicationWillEnterForeground: Lets you know that your app is moving out of the background and back into the foreground, but that it is not yet active.

UIViewController 的状态

UIViewController Valid State Transitions
上图顾名思义,对于 View Controller 来说, 用户浏览的时间应为 viewDidAppearviewWillDisappear 中间的时间。

如何定义用户的一次浏览

用户打开 APP 后显示内容时,肯定会触发 viewDidAppear ,此时用户点击按钮跳转别的 View Controller,就会触发当前 View Controller 的 viewWillDisappear ,这就可以定义为一次浏览。

但是用户使用完毕后可能直接退出 APP 或切换到别的 APP,此时虽然没有触发 viewWillDisappear ,但仍是一次浏览。

具体设计

根据上面的分析,在不同系统事件时执行相应逻辑操作即可。

系统事件 追踪器逻辑
viewDidAppear 记录开始浏览时间
applicationWillResignActive: 记录终端浏览信息
applicationDidBecomeActive: 记录恢复浏览时间
viewWillDisappear 一次浏览结束后上报统计信息
applicationDidEnterBackground: 一次浏览结束后上报统计信息
applicationWillEnterForeground: 重新开始新的一次浏览
追踪器状态机
螺号日历

相关文章

网友评论

    本文标题:【螺号日历】iOS APP 追踪页面浏览时间

    本文链接:https://www.haomeiwen.com/subject/mtqdzxtx.html