概述
2019独角兽企业重金招聘Python工程师标准>>>
使用文档地址:https://mta.qq.com/docs/wechat_mini_program.html
var MTA_CONFIG = {
app_id: "",
event_id: "",
api_base: "https://pingtas.qq.com/pingd",
prefix: "_mta_",
version: "1.3.6",
stat_share_app: !1,
stat_pull_down_fresh: !1,
stat_reach_bottom: !1
};
function getNetworkType(cb) {
wx.getNetworkType({
success: function (res) {
cb(res.networkType);
}
});
}
function getSystemInfo() {
var info = wx.getSystemInfoSync();
return {
adt: encodeURIComponent(info.model), // 手机型号
scl: info.pixelRatio, // 设备像素比
scr: info.windowWidth + "x" + info.windowHeight, // 可使用窗口宽度/高度
lg: info.language, // 微信设置的语言
fl: info.version, // 微信版本号
jv: encodeURIComponent(info.system), // 操作系统版本
tz: encodeURIComponent(info.platform) // 客户端平台
};
}
// 用户id,第一次运行时生成,清理小程序会重新生成
function getUID() {
try {
return wx.getStorageSync(MTA_CONFIG.prefix + "auid");
} catch (e) {}
}
function setUID() {
try {
var uid = getRandom();
wx.setStorageSync(MTA_CONFIG.prefix + "auid", uid);
return uid;
} catch (e) {}
}
// 会话id,每次重新启动小程序,会重新生成
function getSID() {
try {
return wx.getStorageSync(MTA_CONFIG.prefix + "ssid");
} catch (a) {}
}
function setSID() {
try {
var sid = "s" + getRandom();
wx.setStorageSync(MTA_CONFIG.prefix + "ssid", sid);
return sid;
} catch (e) {}
}
function getRandom(a) {
for (var b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], c = 10, d = 0; 1 < c; c--) {
d = Math.floor(10 * Math.random());
var f = b[d];
b[d] = b[c - 1];
b[c - 1] = f;
}
for (c = d = 0; 5 > c; c++) d = 10 * d + b[c];
return (a || "") + (d + "" + new Date());
}
// 获取当前页面路径地址
function getPagePath() {
try {
var pages = getCurrentPages(),
root = "/";
if (0 < pages.length) {
root = pages.pop().__route__;
}
return root;
} catch (e) {
console.log("get current page path error:" + c);
}
}
// 获取主要信息?每次请求都会发送
function getMainInfo() {
var info = {
dm: "wechat.apps.xx", // 上报类型
url: getPagePath(), // 页面路径
pvi: "", // 用户id
si: "", // 会话id
ty: 0 // 是否是新用户
};
info.pvi = function () {
var uid = getUID();
if (!uid) {
uid = setUID();
info.ty = 1;
}
return uid;
}();
info.si = function () {
var sid = getSID();
if (!sid) {
sid = setSID();
}
return sid;
}();
return info;
}
// 获取基本信息,包含系统信息和网络类型
function getBasicInfo() {
var info = getSystemInfo();
getNetworkType(function (res) {
try {
var ntype = res.networkType;
wx.setStorageSync(MTA_CONFIG.prefix + "ntdata", ntype);
} catch (e) {}
});
info.ct = wx.getStorageSync(MTA_CONFIG.prefix + "ntdata") || "4g"; // 网络类型
return info;
}
// 获取扩展信息,用户信息,微信,版本,appid
function getExtentInfo() {
var user = MTA.Data.userInfo;
var b = [],
c;
for (c in user) {
if (user.hasOwnProperty(c)) {
b.push(c + "=" + user[c]); // 分号分割的等号拼接
}
}
user = b.join(";");
return {
r2: MTA_CONFIG.app_id,
r4: "wx",
ext: "v=" + MTA_CONFIG.version + (null !== user && "" !== user ? ";ui=" + encodeURIComponent(user) : "")
};
}
var MTA = {
// 应用启动级别的初始化
App: {
init: function (params) {
"appID" in params && (MTA_CONFIG.app_id = params.appID);
"eventID" in params && (MTA_CONFIG.event_id = params.eventID);
"statShareApp" in params && (MTA_CONFIG.stat_share_app = params.statShareApp);
"statPullDownFresh" in params && (MTA_CONFIG.stat_pull_down_fresh = params.statPullDownFresh);
"statReachBottom" in params && (MTA_CONFIG.stat_reach_bottom = params.statReachBottom);
setSID(); // 重置会话ID
try {
// 设置启动参数记录
"lauchOpts" in params && (MTA.Data.lanchInfo = params.lauchOpts, MTA.Data.lanchInfo.landing = 1);
} catch (e) {}
}
},
// 页面级别的功能
Page: {
// 初始化
init: function () {
var page = getCurrentPages()[getCurrentPages().length - 1];
// 页面显示事件
page.onShow && !
function () {
var b = page.onShow;
page.onShow = function () {
MTA.Page.stat();
b.call(this, arguments);
};
}();
// 下拉刷新事件
MTA_CONFIG.stat_pull_down_fresh && page.onPullDownRefresh && !
function () {
var b = page.onPullDownRefresh;
page.onPullDownRefresh = function () {
MTA.Event.stat(MTA_CONFIG.prefix + "pulldownfresh", {
url: page.__route__
});
b.call(this, arguments);
};
}();
// 上拉事件
MTA_CONFIG.stat_reach_bottom && page.onReachBottom && !
function () {
var b = page.onReachBottom;
page.onReachBottom = function () {
MTA.Event.stat(MTA_CONFIG.prefix + "reachbottom", {
url: page.__route__
});
b.call(this, arguments);
};
}();
// 分享事件
MTA_CONFIG.stat_share_app && page.onShareAppMessage && !
function () {
var b = page.onShareAppMessage;
page.onShareAppMessage = function () {
MTA.Event.stat(MTA_CONFIG.prefix + "shareapp", {
url: page.__route__
});
return b.call(this, arguments);
};
}();
},
multiStat: function (a, b) {
if (1 == b) {
MTA.Page.stat(a);
} else {
var page = getCurrentPages()[getCurrentPages().length - 1];
page.onShow && !
function () {
var b = page.onShow;
page.onShow = function () {
MTA.Page.stat(a);
b.call(this, arguments);
};
}();
}
},
// 页面数据上报
stat: function (data) {
if ("" == MTA_CONFIG.app_id) return;
var dataReq = [],
extentInfo = getExtentInfo();
if (data) extentInfo.r2 = data; // MTA_CONFIG.app_id,
data = [getMainInfo(), extentInfo, getBasicInfo()];
// 启动信息参数
if (MTA.Data.lanchInfo) {
data.push({
ht: MTA.Data.lanchInfo.scene, // 启动场景值
rdm: "/",
rurl: MTA.Data.lanchInfo.path // 启动小程序时的路径
});
// 有渠道id
MTA.Data.lanchInfo.query && MTA.Data.lanchInfo.query._mta_ref_id && data.push({
rarg: MTA.Data.lanchInfo.query._mta_ref_id // 渠道id的设计
});
try {
if (MTA.Data.lanchInfo.landing) {
extentInfo.ext += ";lp=1"; // 表示会话第一次上报? 和userinfo信息放在一起
MTA.Data.lanchInfo.landing = 0; // 仅仅提交一次
}
} catch (e) {}
}
data.push({
rand: +new Date()
});
var index = 0;
for (var d = data.length; index < d; index++) {
for (var key in data[index]) {
if (data[index].hasOwnProperty(key)) {
dataReq.push(key + "=" + ("undefined" == typeof data[index][key] ? "" : data[index][key]));
}
}
}
// 使用get方式提交数据
wx.request({
url: MTA_CONFIG.api_base + "?" + dataReq.join("&").toLowerCase()
});
}
},
Event: {
stat: function (url, params) {
if ("" != MTA_CONFIG.event_id) {
var dataReq = [],
mainInfo = getMainInfo(),
extentInfo = getExtentInfo();
mainInfo.dm = "wxapps.click"; // 点击数据上报,类型不同时,参数意义不同
mainInfo.url = url; // 数据路径
extentInfo.r2 = MTA_CONFIG.event_id; // 事件ID;MTA_CONFIG.app_id?
// 封装自定义业务参数到r5
params = "undefined" === typeof params ? {} : params;
var k = [];
for (var key in params) {
if (params.hasOwnProperty(key)) {
k.push(encodeURIComponent(key) + "=" + encodeURIComponent(params[key]));
}
}
params = k.join(";");
extentInfo.r5 = params; // 自定义参数数据,逗号分隔等号连接
// 准备输出数据
var index = 0;
var data = [mainInfo, extentInfo, getBasicInfo(), {
rand: +new Date()
}];
for (len = data.length; index < len; index++) {
for (var key2 in data[index]) {
if (data[index].hasOwnProperty(key2)) {
dataReq.push(key2 + "=" + ("undefined" == typeof data[index][key2] ? "" : data[index][key2]));
}
}
}
// 发起http的get请求
wx.request({
url: MTA_CONFIG.api_base + "?" + dataReq.join("&").toLowerCase()
});
}
}
},
Data: {
userInfo: null,
lanchInfo: null
}
};
module.exports = MTA;
转载于:https://my.oschina.net/jdragon/blog/2987537
最后
以上就是传统过客为你收集整理的腾讯MTA统计小程序端代码注解的全部内容,希望文章能够帮你解决腾讯MTA统计小程序端代码注解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复