神策分析 Android SDK 之用户路径采集

本文介绍了神策分析Android SDK如何采集用户路径,包括App启动、退出事件和页面浏览。通过session机制和补发机制确保用户行为路径的完整记录,详细讲解了启动事件、退出事件和页面浏览($AppViewScreen)的采集逻辑。
摘要由CSDN通过智能技术生成

 

一、用户路径

用户路径分析为八大重要分析模型之一,可以追踪用户从某个开始行为事件直到结束事件的行为路径,是一种监测用户流向,从而统计产品使用深度的分析方法,帮助业务人员了解用户行为分布情况,对海量用户的行为习惯形成宏观了解。

用户路径的作用

用户路径可以帮助使用者洞察用户看似平常的行为背后真正的思想,从而摆脱“大海捞针”式的用户行为数据查询。

使用者既可以有的放矢,验证自身假设,有针对性地解决问题;也可以日常监测用户的行为路径,及时发现用户的核心关注点及干扰选项,引导用户持续挖掘产品及服务的价值。

二、用户路径的采集

一个用户的完整行为路径会包含多个行为事件,以电商为例,用户从打开 App 到支付成功要经过首页浏览、搜索商品、加入购物车、提交订单、支付订单等过程。而在用户真实的选购过程是一个交缠反复的过程,例如提交订单后,用户可能会返回首页继续搜索商品,也可能去取消订单,每一个路径背后都有不同的动机。

通常一个完整的用户路径包含 App 启动、若干个页面浏览和 App 退出等事件。通过 Application.ActivityLifecycleCallbacks 监听,神策 Android SDK 实现 App 启动、页面浏览和App 退出三个行为事件。

(一)基础概念

要想了解神策的用户路径采集原理,首先我们要了解下 session 和补发机制

  • session 机制

在 Android App 中,由于用户会很频繁的切换应用,就会造成应用的启动和退出事件过于频繁,且会打断用户正常浏览序列。

例如在上图这种情况,就会有 2 个完整的用户路径:

打开应用 → 浏览页面 1 → 关闭/切换应用  → 打开应用 → 浏览页面 2 → 关闭/切换应用

而页面浏览 1 和页面浏览 2 就被切割成 2 个独立的用户路径。

所以神策 Android SDK 为了应对应用切换、多进程和强杀等场景,加入了 session 机制(默认 30 秒,可动态设置)用户打开 App 距上次退出 App 少于设置的 session 时间,则不会触发应用退出和启动事件,如下图:

这时用户路径就被变成为:

打开应用 → 浏览页面 1 →  浏览页面 2 →  关闭/切换应用

  • 补发机制

如果在退出 App 到后台 30 秒内,进程还没有被杀掉,那么此时会触发退出事件并尝试上报,如果进程被杀掉了,那么退出事件会在下一次启动时补发。

了解完 session 机制和补发机制后,我们再从代码层面来具体讲讲用户路径事件的采集逻辑。

(二)App 启动事件

当用户首次启动 App 时,如果满足我们的 session 时长机制则会触发 App 启动事件。SensorsDataActivityLifecycleCallbacks 中的 onActivityStrated 方法的实现如下:

应用启动

@Override

public void onActivityStarted(Activity activity) {

    try {

       ...

        //step 1 读取 Activity 启动的个数

        if (isMultiProcess) {//是否多进程

            startActivityCount = mDbAdapter.getActivityCount();

            mDbAdapter.commitActivityCount(++startActivityCount);

        } else {

            ++startActivityCount;

        }

        // 如果是第一个页面

        if (startActivityCount == 1) {

            ...

            boolean sessionTimeOut = isSessionTimeOut();

            //step 2 是否满足 session 时长间隔

            if (sessionTimeOut) {

                ...

                try {

                    if (mSensorsDataInstance.isAutoTrackEnabled() && !mSensorsDataInstance.isAutoTrackEventTypeIgnored(SensorsDataAPI.AutoTrackEventType.APP_START)) {

                        if (firstStart) {

                            mFirstStart.commit(false);

                        }

                        JSONObject properties = new JSONObject();

                        properties.put("$resume_from_background", resumeFromBackground);

                        properties.put("$is_first_time", firstStart);

                        SensorsDataUtils.mergeJSONObject(activityProperty, properties);

                        //step 3 发送 $AppSt

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值