美文网首页
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页面埋点统计-使用文档

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