美文网首页
EventAgent页面埋点统计-使用文档

EventAgent页面埋点统计-使用文档

作者: yejg | 来源:发表于2018-05-25 14:36 被阅读162次

个人笔记-页面埋点方案研究

导入包

//以下是在主module的build
implementation 'com.zhy.core:EventAgent:1.0.3'

//以下是在主项目build
allprojects {
    repositories {
        ...
        maven { url 'http://*.*.*.*:*/nexus/content/repositories/zhy' }
        
    }
}

页面统计

统计用户访问的页面,访问页面的顺序,页面停留时间。
SDK主要的类是

EventAgent

Application里面初始化

检测本地是否有时间记录的文件,有则提交数据,并删除已经提交的数据

   /**
     * 检测本地是否有时间记录的文件,有则提交数据,删除文件
     * @param context
     * @param host 要带斜杠
     * @param appId 应用id
     */
public static void init(final Context context, String host, final String appId)
参数 含义
context 都使用application的Context上下文就好。
host 要带斜杠
appid 应用id

包含Activity、Fragment

页面统计API:一次成对的 onPageStart -> onPageEnd 调用,对应一次手动页面生命周期统计。
FragmentActivity页面只需要统计Fragment,只需要在这些页面的onResume()里面调用

    @Override
    protected void onResume() {
        EventAgent.pauseCountAct();//注意在super前
        super.onResume();
}

统计的代码在BaseActivity、BaseFragment的onResume和onPause调用

public  static  void onPageStartAct(String viewName);

public  static  void onPageEndAct(String viewName);

public  static  void onPageStartFrag(String viewName);

public  static  void onPageEndFrag(String viewName);
参数 含义
viewName 自定义页面名(直接取class的simpleName)

示例(BaseActivity):

    @Override
    protected void onResume() {
        super.onResume();
        NLog.i("BaseActivity","onResume");
        EventAgent.onPageStartAct(getClass().getSimpleName());
    }

    @Override
    protected void onPause() {
        super.onPause();
        NLog.i("BaseActivity","onPause");
        EventAgent.onPageEndAct(getClass().getSimpleName());
    }

最后需要在程序退到后台的时候,保存统计数据,以免程序死掉数据丢失

方案是在BaseActivity的onStop方法检测程序是否不在前台了,就是程序从前台转向后台
检测是否在前台的代码:

    /**
     * 判断App是否处于前台
     *
     * @return {@code true}: 是<br>{@code false}: 否
     */
    public static boolean isAppForeground() {
        ActivityManager manager = (ActivityManager) Utils.getContext().getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> info = manager.getRunningAppProcesses();
        if (info == null || info.size() == 0) return false;
        for (ActivityManager.RunningAppProcessInfo aInfo : info) {
            if (aInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                return aInfo.processName.equals(Utils.getContext().getPackageName());
            }
        }
        return false;
    }

然后在BaseActivity的onStop里面

    @Override
    protected void onStop() {
        super.onStop();
        NLog.i("BaseActivity","onStop");
        if (!AppUtils.isAppForeground()) {
            NLog.i("app从前台退到后台");
            Utils.setBackground(false);
            EventAgent.appClose(mContext);
        }
    }

这里是把埋点统计的数据保存到文件,待init的时候上传给服务器,这里是增量保存,只有上传成功,内容才会被清除,就是说如果这次网络不好没有上传成功,那么下次使用会一并上传。

判断集成成功

如果集成成功在第二次启动的时候可以看到如下日志:


2018-05-29_164004.jpg

相关文章

  • EventAgent页面埋点统计-使用文档

    个人笔记-页面埋点方案研究 导入包 页面统计 统计用户访问的页面,访问页面的顺序,页面停留时间。SDK主要的类是 ...

  • 为什么需要数据埋点?

    一、什么是埋点? 数据埋点我们可以分成:页面统计、行为统计、用户属性统计等。 页面统计可以帮我们知晓某个页面被多少...

  • 页面埋点统计

    页面埋点的事件比较多 只做了一个时间埋点 .h里 .m里 //进入页面所有的操作 //进入页面的时间 //离开页面...

  • 友盟数据埋点前,你要知道这些

    一、数据埋点具体应用 1、统计路径 一般APP所有页面都会进行埋点,埋点后友盟会统计用户在页面上的访问路径,通过访...

  • Vue 项目声明式主动埋点

    公司系统需求加上埋点功能,用来统计各页面功能的使用情况。于是,结合网上资料以及之前使用埋点系统的经历,仔细研究研究...

  • 2020-02-26 如何设计数据埋点

    案例:对活动入口的点击量进行埋点统计? 三种简单的前端埋点事件 曝光事件:记录页面被浏览次数,记录页面流量所用。 ...

  • 关于项目中埋点的总结和思路

    项目中的埋点怎么做的? 埋点:就是需要统计页面打开或者控件点击次数的方式。借助友盟等平台。分手动埋点、自动埋点两种...

  • iOS 无嵌入埋点(页面统计)

    记录自用

  • 数据埋点之二:埋点目标

    常用的埋点采集数据主要分为两类 第一类:统计应用页面访问情况,即页面统计,随页面访问动作发生时进行上报。 第二类:...

  • 埋点系列3-埋点的框架设计及其准确性

    通过前两章《埋点需求分析&设计埋点方案》《输出埋点需求文档》,我们已经足够了解埋点,并且能够输出埋点文档了。但是想...

网友评论

      本文标题:EventAgent页面埋点统计-使用文档

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