|
|
%!s(int64=2) %!d(string=hai) anos | |
|---|---|---|
| .. | ||
| ReqBase.js | %!s(int64=2) %!d(string=hai) anos | |
| actionTemplete.js | %!s(int64=2) %!d(string=hai) anos | |
| actionsdk-1.0.0.js | %!s(int64=2) %!d(string=hai) anos | |
| readme.md | %!s(int64=2) %!d(string=hai) anos | |
全局混入,在main.js内混入actionTemplete,混入之后每个页面会自动初始化actionsdk
import action from "@/action_sdk/actionTemplete.js"
Vue.mixin(action)
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.参数修改
/**
* 修改参数(需要修改参数时传入对应需要修改的参数即可)
* @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.浏览行为上报
/**
* 记录用户浏览行为(参数非必传,只有需要修改参数时传入对应需要修改的参数即可)
* @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.分享行为上报
/**
* 记录用户分享行为,分享行为上报
* @param BIND_TYPE 行为对象类型
* @param BIND_ID 行为对象id
* @param USER_ID 当前用户id
*/
this.SEND_SHARE_FN()
// 无需传递参数,可直接触发一次分享行为上报,参数默认为混入模板内部获取的参数
4.分享行为预处理
//小程序分享
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.其他行为上报
/**
* 其他行为上报
* @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必传,可直接触发一次其他行为上报,参数需要自定义赋值