1.0.1 • Published 5 years ago

gs_log_sdk v1.0.1

Weekly downloads
1
License
ISC
Repository
-
Last release
5 years ago

#高思前端打点工具 #####注意:SDK使用了一些ES6的API和语法糖, 请根据需要在构建过程中使用Babel编译, 添加相应polyfill Babel-preset-env: https://new.babeljs.io/docs/en/next/babel-preset-env.html#usebuiltins-usage

@version 1.0   | 2018-12-29 | RongZhiqiang   // 初始版本。
@version 1.0.1 | 2019-02-20 | RongZhiqiang   
//添加打点类型字段:evt:{imp:展示|clk:点击|chg:文本改变(预留)}。
//修改原本只对body标签自动触发pv/uv打点逻辑, 现添加对所有包含GS-LOG-PV类名元素的自动打点策略(1.1.0已重构)。
@version 1.1.0 | 2019-08-23 | RongZhiqiang            
// 1.添加自动打点事件方法, 添加对所有包含GS-LOG-AUTO类名元素的自动打点策略, 
//   依赖setActionConf设置自动打点配置, 通过配置文件中的evt字段区分打点方式, 
//   (点击事件自动打点支持当前访问仅统计一次添加gs-evt-once='1'属性)。
// 2.添加setActionConf方法支持从配置表导入打点数据信息。
// 3.添加测试日志展示弹层(临时)。
// 4.setCommonData替换为setNativeData, 以免发生歧义。

@author RongZhiqiang | rongzhiqiang@gaosiedu.com。
@method sendLog(data)    		// 声明式打点方法
@param data {Object}     		// 参数:自定义参数集合(必选)。
 data: {    			 
  pd {String}            		// 项目ID(必选)。
  pad {String}           		// 页面ID(必选)。
  aad {String}           		// 标签ID(可选, 曝光展示打点/用户行为触发打点, 默认曝光展示打点)。
  evt {String}                  // 触发打点类型(可选), evt: {imp:展示 | clk:点击 | chg:文本改变(预留)}。
  app_ver {String}            	// 参数:业务版本号(建议填写/AMC平台必选)。
  ...                    		// 自定义扩展字段, 在业务调用打点是自定义添加, 可以是String或Number。
 }
@return No               	    // 返回:无。

@method setNativeData(list)     // 动态扩展从NA获取公共参数方法
@param list {Array}      		// 参数:从WebView的UA中获取的公共参数名称数组。
list: [string, ...]    	 		// 自定义参数集合(必选)。
@return No               		// 返回:无。

@method setActionConf(config)   // 方法:设置自动打点数据配置方法。
@param config {Object}          // 参数:必选, 全局自动打点配置文件(JSON)。
@return No                      // 返回:无。

@method sendLogById(id,args)    // 方法:设置自动打点数据配置方法。
@param id {String}              // 参数:必选, 配置文件中的数据ID。
@param args {Object}            // 参数:可选, 可选参数集合, 同setActionConf中的参数规范。
@return No                      // 返回:无。
 
@区分业务单元及运行环境需要各业务单元在构建项目时注入全局变量
__ENV__: 构建环境标识 (必须, 默认 production 为生产环境, 其他为dev/test环境)
__GROUP__: 业务单元标识 (必须, 既hostname前缀中的业务单元标识) 
eg:
http://axx-logs.cn-beijing.log.aliyuncs.com/..  __GROUP__:axx
http://opc-logs.cn-beijing.log.aliyuncs.com/..  __GROUP__:opc

###示例:

import Logger from '../../assets/lib/gsSendLog';
声明式打点方法sendLog:
Logger.sendLog({
  pd: {String}, 
  pad: {String}, 
  aad: {String}, 
  evt: {String}, 
  pp1: {Object}, 
  uid: {String}, 
  ...
});

sendLogById方法
Logger.sendLogById(id, {uid: uid, app_ver: '1.0.2', ...});

setNativeData方法:
Logger.setNativeData(['params1','params2']);

setActionConf方法
Logger.setActionConf(config);

配置规则:
config: {
  @id: { 
    pd: {String}|必选, 
    pad: {String}|必选, 
    evt: {String}|必选, 
    aad: {String}|点击事件必选, 
    pp1: {Object},
    ...
  }
  ...
}

页面自动打点
1.通过setActionConf设置自动打点配置后, 对全局元素中包含GS-LOG-AUTO类名的元素进行过滤筛选, 
  匹配gs-log-key在配置文件中的数据作为自动打点参数, 通过evt属性区分展现/点击, 自动添加打点, 无需额外声明调用;
2.如在业务场景中需要uid字段, 则可以通过在document.body属性中添加gs-log-uid属性, 
  SDK自动获取其值作为参数合并到打点请求参数中;
3.通过document全局代理点击事件, 添加对evt:clk的元素的touchstart事件进行绑定, 触发事件时进行打点;
4.通过添加gs-evt-once='1'属性实现点击事件当次会话访问只触发一次打点的策略;
5.自定义扩展字段统一收敛到pp1字段中。

黑科技(临时)
通过识别打包构建注入的全局变量window.__ENV__ !== 'production' 时(测试/开发环境), 
在窗口的左下角连点 5 次触发当前页面本次所有打点的汇总列表, 解决一期QA打点数据筛查需求, 
务必注意window.__ENV__注入;

###基础公共参数: 参数名称|取值(示例)|类型|说明 :--|:--|:--|:--- APIVersion|0.6.0|string|SDK版本号标识 u2|93feedad-e88d-1ddb-8d53-9b0f88c2dc09|string|动态生成唯一标识, 如存在则直接从localStorage中获取,不存在则随机生成并写入localStorage, 手动清除后失效 rpad|gaosi01_test|string|页面来源, 可能为空, 同一个session期间使用首次访问的pad作为来源, 兼容历史线上业务 r_url|http%3A%2F%2Fwww.gaosiedu.com|string| document.referrer, 可能为空 url |http%3A%2F%2Fwww.gaosiedu.com|string| 当前页面链接。 brand|iphone|string|匹配userAgent中的设备厂商类型 model|11.0|string|匹配userAgent中的设备型号版本 browser|safari_604|string|匹配userAgent中的浏览器信息 et|1548240682915|number|打点发生时的毫秒时间戳 w|414|number|screen宽度 h|736|number|screen高度

###必选参数: 参数名称|类型|说明 :--|:--|:--- pd|string|项目ID, 通过BI后台功能手动生成 pad|string|页面ID, 通过BI后台功能手动生成 aad|string|标签ID, 通过BI后台功能手动生成(用户行为触发类型打点时必选) app_ver|string|业务版本号(建议填写/AMC平台必选) evt|string|触发打点类型(自动打点配置必选), imp:展示, clk:点击, chg:文本改变(预留)

###可选参数: 参数名称|类型|说明 :--|:--|:--- uid|string|用户ID role|string|用户角色 da_src|string|曝光位置 lang|string|语言 lng|number|经度 lat|number|纬度 net_type|string|网络类型 pp1|object|自定义扩展属性集合

###Hybrid客户端公共参数:

需要NA配合把公共参数写入webview的userAgent中, 命名以GSEDU_为通用前缀。
eg: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) 
Version/11.0 Mobile/15A372 Safari/604.1 GSEDU_group/aixuexi GSEDU_vcname/1.0.0 ...
Hybrid客户端公共参数统一合并到pp1自定义扩展字段中(SDK处理)
参数名称取值类型说明
groupaxxstring产品线标识, 由业务方定义标识信息, NA端写入UA
cuidNA设备唯一标识string设备唯一标识码, 作为用户UV统计标准,由NA从系统获取或根据相应规则生成
vccode100number版本号, eg: 100
vcname1.0.0string版本名称, eg: 1.0.0