Skip to content
微信公众号

用户操作路径收集

用户的操作路径往往伴随着App及Page生命周期的执行,所以,我们是通过劫持二者的生命周期来进行记录。原理代码整合如下:

js
const originApp = App;
const self = this;
App = function(app){
    ["onLaunch","onShow","onHide","onError"].forEach(methodName=>{
        //保存用户自定义方法
        const userDefinedMethod = app[methodName];
        //App Launch 获取基础信息
        if(methodName === "onLaunch"){
            self.getNetworkType();
            self.config.setLocation && self.getLocation();
            self.config.setSystemInfo&&self.getSystemInfo();
        }
        app[methodName] = function(options){
            //用户操作记录埋点
            const breadcrumb = {
                type:"function",
                time: utils.now(),
                belong:"App",
                method:methodName,
                path:options&&options.path,//页面路径
                query: options&&options.query,//页面参数
                scene:options&&options.scene //场景编号
            };
            self.pushToBreadcrumb(breadcrumb);
            //错误上报
            methodName === "onError"&&self.error({msg:options});
            //执行用户自定义方法
            return (userDefinedMethod&&userDefinedMethod.call(this,options));
        }
    });
    return originApp(app);
}

Released under the MIT License.