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

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

导入包

//以下是在主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}: 是
{@code false}: 否 */ public static boolean isAppForeground() { ActivityManager manager = (ActivityManager) Utils.getContext().getSystemService(Context.ACTIVITY_SERVICE); List 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页面埋点统计-使用文档)