Android 全埋点解决方案,2021大厂Android面试经历

本文详细介绍了Android全埋点的解决方案,包括页面埋点和事件埋点的实现方式,涉及到Fragment的处理以及点击事件的拦截。在页面埋点中,通过JSONObject记录关键信息,如activity和fragment的标识。事件埋点则通过拦截系统点击事件并替换为自定义点击事件,以实现埋点跟踪。此外,文中还分享了2021年Android面试的相关经验。
摘要由CSDN通过智能技术生成

jsonObject.put(“pageId”, SensorsDataPrivate.getCurrentActivity().getClass().getCanonicalName());

jsonObject.put(“sessionId”, UUID.randomUUID().toString().replace("-", “”));

Log.i(TAG, SensorsDataPrivate.formatJson(jsonObject.toString()));

} catch (Exception e) {

e.printStackTrace();

}

}

这里也很简单,先后创建了两个JSONObject,一个是最外层的jsonObject ,一个是作为参数使用的sendProperties,然后又把传过来的参数合并到sendProperties中,然后sendProperties作为extrasvalue使用。

endTime结束时间就取当前时间。

sessionId表示是这个埋点的唯一标示,看自己需求,非必须。

最后调用了Log打印出来,来看一下最后完整的数据:

{

“event”: “$AppViewScreen”,

“extras”: {

“app_name”: “TrackDemo”,

“screen_width”: 1440,

“screen_height”: 2621,

“app_version”: “1.0”,

“os_version”: “10”,

“model”: “Android SDK built for x86”,

“manufacturer”: “Google”,

“activity”: “com.yechaoa.trackdemo.ui.MainActivity”

},

“beginTime”: 1603279291751,

“endTime”: 1603279293759,

“pageId”: “com.yechaoa.trackdemo.ui.MainActivity”,

“sessionId”: “5dbb96807e634b6498f897784972ade3”

}

可以看到除了我们必要的参数之外,还有一些附加参数,比如手机型号、系统版本等等。

Fragment

上面是Activity的埋点,关于fragment书中并没有讲解,不过我们也可以按照生命周期的方式来处理,比如在BaseFragment中进行统一埋点,又或者单独处理,正好演示一下手动埋点的操作。

示例:

private var mBeginTime = 0L

override fun onResume() {

super.onResume()

mBeginTime = System.currentTimeMillis()

}

首先在onResume中记录一下开始时间。

override fun onHiddenChanged(hidden: Boolean) {

super.onHiddenChanged(hidden)

val blankFragment = this

if (hidden) {

val activity = activity as SecondActivity

val jsonObject = JSONObject()

jsonObject.put(“useActivity”, true)

jsonObject.put(“fragment”, activity.javaClass.canonicalName + blankFragment.javaClass.canonicalName + “-custom”

)

SensorsDataAPI.getInstance().track(“AppViewScreen”, jsonObject, mBeginTime)

}

}

然后在onHiddenChanged中判断显示与否进行埋点,自定义数据,然后调用track方法进行埋点。

唯一标示的key用fragment表示,value用当前引用的activity全路径,加上fragment的全路径,最后加上自定义的参数,即可作为唯一标示

以上即为页面埋点的主要代码,以及一些关键的代码细节,最后附Demo地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值