wechat-mini-program-ga-sdk
Version:
Integrate Google Analytics with Wechat Mini Program via Measurement Protocol
200 lines (174 loc) • 6.57 kB
JavaScript
const SceneMapping = {
1001: "发现栏小程序主入口",
1005: "顶部搜索框的搜索结果页",
1006: "发现栏小程序主入口搜索框的搜索结果页",
1007: "单人聊天会话中的小程序消息卡片",
1008: "群聊会话中的小程序消息卡片",
1011: "扫描二维码",
1012: "长按图片识别二维码",
1013: "手机相册选取二维码",
1014: "小程序模版消息",
1017: "前往体验版的入口页",
1019: "微信钱包",
1020: "公众号profile页相关小程序列表",
1022: "聊天顶部置顶小程序入口",
1023: "安卓系统桌面图标",
1024: "小程序profile页",
1025: "扫描一维码",
1026: "附近小程序列表",
1027: "顶部搜索框搜索结果页“使用过的小程序”列表",
1028: "我的卡包",
1029: "卡券详情页",
1030: "自动化测试下打开小程序",
1031: "长按图片识别一维码",
1032: "手机相册选取一维码",
1034: "微信支付完成页",
1035: "公众号自定义菜单",
1036: "App 分享消息卡片",
1037: "小程序打开小程序",
1038: "从另一个小程序返回",
1039: "摇电视",
1042: "添加好友搜索框的搜索结果页",
1043: "公众号模板消息",
1044: "带shareTicket的小程序消息卡片",
1045: "朋友圈广告",
1046: "朋友圈广告详情页",
1047: "扫描小程序码",
1048: "长按图片识别小程序码",
1049: "手机相册选取小程序码",
1052: "卡券的适用门店列表",
1053: "搜一搜的结果页",
1054: "顶部搜索框小程序快捷入口",
1056: "音乐播放器菜单",
1057: "钱包中的银行卡详情页",
1058: "公众号文章",
1059: "体验版小程序绑定邀请页",
1064: "微信连Wifi状态栏",
1067: "公众号文章广告",
1068: "附近小程序列表广告",
1069: "移动应用",
1071: "钱包中的银行卡列表页",
1072: "二维码收款页面",
1073: "客服消息列表下发的小程序消息卡片",
1074: "公众号会话下发的小程序消息卡片",
1077: "摇周边",
1078: "连Wi-Fi成功页",
1079: "微信游戏中心",
1081: "客服消息下发的文字链",
1082: "公众号会话下发的文字链",
1084: "朋友圈广告原生页",
1089: "微信聊天主界面下拉",
1090: "长按小程序右上角菜单唤出最近使用历史",
1091: "公众号文章商品卡片",
1092: "城市服务入口",
1095: "小程序广告组件",
1096: "聊天记录",
1097: "微信支付签约页",
1099: "页面内嵌插件",
1102: "公众号 profile 页服务预览",
1103:"发现栏小程序主入口,「我的小程序」列表(基础库2.2.4版本起废弃)",
1104: "微信聊天主界面下拉,「我的小程序」栏(基础库2.2.4版本起废弃)",
1106:"聊天主界面下拉,从顶部搜索结果页,打开小程序",
1107: "订阅消息,打开小程序",
1113:"安卓手机负一屏,打开小程序(三星)",
1114:"安卓手机侧边栏,打开小程序(三星)",
1124:"扫“一物一码”打开小程序",
1125:"长按图片识别“一物一码”",
1126:"扫描手机相册中选取的“一物一码”",
1129:"微信爬虫访问 详情",
1131:"浮窗打开小程序",
1146:"地理位置信息打开出行类小程序",
1148:"1148",
default:"unknow scene value"
};
/*
var m =[{
inputRegex:".*",
outputName:"'test'"
},
{
default:"others"
}
]*/
class Mapping {
constructor() {
this.currentMap = {}
this.currentOutput = ""
}
getMap() {
return this.map
}
Mapping(map,input){
const current = map.find(item => input.match(new RegExp(item.inputRegex,"i"))) || map.find(n=>n.default)|| {}
this.currentMap = current
this.currentOutput = current.outputName || current.default
return current.outputName || input
}
getOutput() {
return this.currentOutput
}
}
var m = new Mapping()
class wechatUtils{
construct(sMapping){
this.onWechat = this.isOnwechat()
this.SMapping = sMapping || SceneMapping
}
map(table,field){
return m.Mapping(table,field)
}
isOnwechat(){
if(typeof wx == 'object'){
return true
}
return false
}
mappingSceneToCN(num, mapping){
let m = mapping || this.SMapping
if(this.onWechat){
return m[num] || m['default']
}
return ''
}
generateUA(){
if(typeof wx == 'object'){
let res = wx.getSystemInfoSync();
let isAndroid = res.system.toLowerCase().indexOf('android') > -1;
let iresPad = !isAndroid && res.model.toLowerCase().indexOf('iphone') == -1;
if (isAndroid) {
return "Mozilla/5.0 (Linux; U; " + res.system + "; " + res.model + " Build/000000) AppleWebKit/537.36 (KHTML, like Gecko)Verreson/4.0 Chrome/49.0.0.0 Mobile Safari/537.36 MicroMessenger/" + res.version;
} else if (!iresPad) {
let v = res.system.replace(/^.*?([0-9.]+).*?$/, function (x, y) { return y; }).replace(/\./g, '_');
return "Mozilla/5.0 (iPhone; CPU iPhone OS " + v + " like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C92 MicroMessenger/" + res.version;
} else {
let v = res.system.replace(/^.*?([0-9.]+).*?$/, function (x, y) { return y; }).replace(/\./g, '_');
return "Mozilla/5.0 (iPad; CPU OS " + v + " like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/10A406 MicroMessenger/" + res.version;
}
}
if(typeof navigator == 'object'){
return navigator.userAgent
}
return ''
}
getCurrentPageUrlWithArgs() {
var pages = getCurrentPages()
var currentPage = pages[pages.length - 1]
var url = currentPage.route
var options = currentPage.options
//拼接url的参数
var urlWithArgs = url + '?'
for (var key in options) {
var value = options[key]
urlWithArgs += key + '=' + value + '&'
}
urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)
return urlWithArgs
}
getCurrentPageUrl() {
var pages = getCurrentPages()
var currentPage = pages[pages.length - 1]
var url = currentPage.route
return url
}
}
export default wechatUtils