## 用户行为分析埋点 ### 使用方式 1. 全局混入,在main.js内混入actionTemplete,混入之后每个页面会自动初始化actionsdk ```javascript import action from "@/action_sdk/actionTemplete.js" Vue.mixin(action) ``` 2. 局部混入使用,适用于单个页面需要埋点 ```javascript ``` ### 说明 1.混入模板后统一在onLoad获取参数, 提供可处理特殊页面参数的方法PAGE_BROWSE_FN, 提供可调整模板内参数方法PAGE_DATA_INIT_FN 2.初始化完成会生成行为code 参数名为CURRENT_CODE, 该code为此次发生的所有行为code,包括浏览,分享行为等, 即该次时间段内的所有浏览分享行为code保持一致 3.当此次行为需要分享时可调用分享预处理方法 SHARE_BEHAVIOR_FN , 获取处理后的分享路径和小程序码,该路径和小程序码会自动拼接参数parentCode parentCode值为本次行为的code ,即前文CURRENT_CODE, 待转发后打开时即可根据parentCode溯源上级分享行为,只需要查询本次浏览行为的parentCode是哪一次行为的code即可 ### 注意事项 1.注意将项目request.js文件内env环境值与action_sdk目录下ReqBase.js文件内env统一, 不然ReqBase无法同步获取当前项目缓存(如用户信息缓存userinfo) dev测试环境 prd正式环境 pota本地环境 2.统一在onLoad内获取分享人id,字段为userId,需将所有项目带分享用户的字段统一为userId 3.统一在onLoad内获取行为对象id,字段为id(如文章id等),需将所有项目进入页面时传入参数统一为id(如文章topic/content/content?id=xxx) 4.扫码进入后获取的参数统一引用json字符串格式,需将所有项目生成码时自定义的分享参数以json字符串格式存入,保证在行为埋点解析分享码参数时格式正确 5.当页面参数与行为埋点混入模板内参数不一致时可在 PAGE_BROWSE_FN 方法内统一调整或处理(id字段不一致时不建议在该方法内调整,因为可能还有扫码进入的情况,建议在页面获取到id后用PAGE_DATA_INIT_FN直接调整) 6.一般来说浏览行为上报是当页面离开或销毁时触发,所以如需调整模板内参数,可调用 PAGE_DATA_INIT_FN 方法传入对应参数 注:如果进入页面立即触发浏览行为上报的,不适用该方法,请在 PAGE_BROWSE_FN 方法内单独处理 7.分享前调用分享预处理方法 SHARE_BEHAVIOR_FN (),获取分享路径或小程序码自定义参数, 分享路径只需传path字段即可,分享小程序码需传codeScene(小程序码自定义参数,类型object), 预处理完成后调用分享行为上报方法SEND_SHARE_FN即可,或者在预处理中传参sendShare=true也可在预处理后直接上报分享行为, SEND_SHARE_FN可用于延迟分享,如先生成小程序码后点击保存小程序码才计入分享行为的情况, 不需要延迟分享直接预处理时传参sendShare=true即可无需单独调用SEND_SHARE_FN 8.关于页面浏览展示的用户日志文案,请在pages.json文件中完善所有页面的navigationBarTitleText,以保证正常获取到页面标题,否则只能展示浏览的页面路径 ### 方法 注:由于使用的是混入模式,在页面内可直接调用以下方法 1.参数修改 ```javascript /** * 修改参数(需要修改参数时传入对应需要修改的参数即可) * @param BIND_TYPE 行为对象类型 * @param BIND_ID 行为对象id * @param USER_ID 当前用户id * @param SHARE_USER_ID 分享用户id * @param PARENT_CODE 上级行为code(用与二次转发) */ this.PAGE_DATA_INIT_FN() //以上参数只传需要修改的 ``` 2.浏览行为上报 ```javascript /** * 记录用户浏览行为(参数非必传,只有需要修改参数时传入对应需要修改的参数即可) * @param BIND_TYPE 行为对象类型 * @param BIND_ID 行为对象id * @param USER_ID 当前用户id * @param SHARE_USER_ID 分享用户id * @param PARENT_CODE 上级行为code(用与二次转发) */ this.SEND_BROWSE_FN() // 无需传递参数,可直接触发一次浏览行为上报,参数默认为混入模板内部获取的参数,可传参(参数类型object,传入对应需要修改的参数即可,如{BIND_ID:xxx}) ``` 3.分享行为上报 ```javascript /** * 记录用户分享行为,分享行为上报 * @param BIND_TYPE 行为对象类型 * @param BIND_ID 行为对象id * @param USER_ID 当前用户id */ this.SEND_SHARE_FN() // 无需传递参数,可直接触发一次分享行为上报,参数默认为混入模板内部获取的参数 ``` 4.分享行为预处理 ```javascript //小程序分享 onShareAppMessage(options) { let path = '/topic/content/content?id=' + this.id + '&userId=' + req.getStorage('userInfo').id; // SHARE_BEHAVIOR_FN 预处理分享路径,通过path获得 path = this.SHARE_BEHAVIOR_FN({path:path,sendShare:true}).path return { title: this.detaile.title, imageUrl: this.detaile.pic, path: path }; } // 小程序码分享(先获取小程序吗并对参数预处理,调用SHARE_BEHAVIOR_FN,在分享的时候单独调用SEND_SHARE_FN触发分享行为上报) getCodeUrl() { let that = this; let scene = { id: that.detaile.id, userId: req.getStorage('userInfo').id }; console.log(scene); //获取小程序码 const params = { page: 'topic/content/content', // SHARE_BEHAVIOR_FN 预处理分享参数,通过codeScene获得 scene: JSON.stringify(this.SHARE_BEHAVIOR_FN({codeScene:scene}).codeScene) }; req.getRequest('/api/program/codev', params, url => { that.setData({ codeUrl: url }); }); }, this.SEND_SHARE_FN() ``` 5.其他行为上报 ```javascript /** * 其他行为上报 * @param BEHAVIOR_TYPE 行为类型 * @param BIND_TYPE 行为对象类型 * @param BIND_ID 行为对象id * @param USER_ID 当前用户id * @param CONTENT 日志文案(如:'浏览了xxx文章') * @param READ_TIME 行为时长(如:'浏览时长',单位s) * @param TYPE_NAME 自定义类型名称 */ this.SEND_SELF_FN () // BEHAVIOR_TYPE必传,可直接触发一次其他行为上报,参数需要自定义赋值 ```