2080 lines
69 KiB
Plaintext
2080 lines
69 KiB
Plaintext
"use strict";
|
|
var e = "[UMENG] -- ", t = function () {
|
|
var t = null, n = !1;
|
|
|
|
function i() {
|
|
this.setDebug = function (e) {
|
|
n = e
|
|
};
|
|
this.d = function () {
|
|
if (n) try {
|
|
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
|
console.debug.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.i = function () {
|
|
try {
|
|
if (n) try {
|
|
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
|
console.info.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.e = function () {
|
|
if (n) try {
|
|
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
|
console.error.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.w = function () {
|
|
if (n) try {
|
|
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
|
console.warn.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.v = function () {
|
|
if (n) try {
|
|
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
|
console.log.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.t = function () {
|
|
if (n) try {
|
|
console.table.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.tip = function () {
|
|
try {
|
|
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
|
console.log.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.tip_w = function (t) {
|
|
try {
|
|
console.log("%c " + e + t, "background:red; padding: 4px; padding-right: 8px; border-radius: 4px; color: #fff;")
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.err = function () {
|
|
try {
|
|
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
|
console.error.apply(console, arguments)
|
|
} catch (e) {
|
|
}
|
|
};
|
|
this.repeat = function (e) {
|
|
for (var t = e; t.length < 86;) t += e;
|
|
return t
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
null === t && (t = new i);
|
|
return t
|
|
}
|
|
}(), n = function () {
|
|
var e = null;
|
|
|
|
function t() {
|
|
var e = {};
|
|
this.useOpenid = function () {
|
|
return !!e.useOpenid
|
|
};
|
|
this.useSwanid = function () {
|
|
return !!e.useSwanid
|
|
};
|
|
this.autoGetOpenid = function () {
|
|
return !!e.autoGetOpenid
|
|
};
|
|
this.appKey = function () {
|
|
return e.appKey
|
|
};
|
|
this.uploadUserInfo = function () {
|
|
return e.uploadUserInfo
|
|
};
|
|
this.enableVerify = function () {
|
|
return e.enableVerify
|
|
};
|
|
this.set = function (t) {
|
|
e = t
|
|
};
|
|
this.get = function () {
|
|
return e
|
|
};
|
|
this.setItem = function (t, n) {
|
|
e[t] = n
|
|
};
|
|
this.getItem = function (t) {
|
|
return e[t]
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
e || (e = new t);
|
|
return e
|
|
}
|
|
}();
|
|
|
|
function i() {
|
|
}
|
|
|
|
i.prototype = {
|
|
on: function (e, t, n) {
|
|
var i = this.e || (this.e = {});
|
|
(i[e] || (i[e] = [])).push({fn: t, ctx: n});
|
|
return this
|
|
}, once: function (e, t, n) {
|
|
var i = this;
|
|
|
|
function r() {
|
|
i.off(e, r);
|
|
t.apply(n, arguments)
|
|
}
|
|
|
|
r._ = t;
|
|
return this.on(e, r, n)
|
|
}, emit: function (e) {
|
|
for (var t = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[e] || []).slice(), i = 0, r = n.length; i < r; i++) n[i].fn.apply(n[i].ctx, t);
|
|
return this
|
|
}, off: function (e, t) {
|
|
var n = this.e || (this.e = {}), i = n[e], r = [];
|
|
if (i && t) for (var o = 0, s = i.length; o < s; o++) i[o].fn !== t && i[o].fn._ !== t && r.push(i[o]);
|
|
r.length ? n[e] = r : delete n[e];
|
|
return this
|
|
}
|
|
};
|
|
var r = new i;
|
|
r.messageType = {CONFIG_LOADED: 0, UMA_LIB_INITED: 1};
|
|
var o = function (e, t) {
|
|
o = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (e, t) {
|
|
e.__proto__ = t
|
|
} || function (e, t) {
|
|
for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
|
|
};
|
|
return o(e, t)
|
|
};
|
|
|
|
function s(e, t) {
|
|
o(e, t);
|
|
|
|
function n() {
|
|
this.constructor = e
|
|
}
|
|
|
|
e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
|
|
}
|
|
|
|
var a = new (function (e) {
|
|
s(n, e);
|
|
|
|
function n() {
|
|
return null !== e && e.apply(this, arguments) || this
|
|
}
|
|
|
|
n.prototype.getSdkType = function () {
|
|
return "wxgamemp"
|
|
};
|
|
n.prototype.getUserInfo = function (e) {
|
|
var n = {
|
|
fail: function () {
|
|
e && e()
|
|
}, success: function (t) {
|
|
if (t && t.userInfo) {
|
|
var n = t.userInfo;
|
|
e && e({
|
|
avatar: n.avatarUrl,
|
|
nickName: n.nickName,
|
|
gender: n.gender,
|
|
country: n.country,
|
|
province: n.province,
|
|
city: n.city,
|
|
language: n.language
|
|
})
|
|
}
|
|
}
|
|
};
|
|
try {
|
|
wx.getSetting({
|
|
success: function (e) {
|
|
e.authSetting["scope.userInfo"] && wx.getUserInfo(n)
|
|
}, fail: function () {
|
|
e()
|
|
}
|
|
})
|
|
} catch (e) {
|
|
t.e("getUserInfo error", e)
|
|
}
|
|
};
|
|
return n
|
|
}(function () {
|
|
function e() {
|
|
}
|
|
|
|
e.prototype.setStorage = function (e, t, n) {
|
|
wx.setStorage({
|
|
key: e, data: t, success: function () {
|
|
"function" == typeof n && n(!0)
|
|
}, fail: function () {
|
|
"function" == typeof n && n(!1)
|
|
}
|
|
})
|
|
};
|
|
e.prototype.getStorage = function (e, n) {
|
|
wx.getStorage({
|
|
key: e, success: function (e) {
|
|
"function" == typeof n && n(e.data)
|
|
}, fail: function (i) {
|
|
t().w(e + ": " + i.errMsg);
|
|
"function" == typeof n && n()
|
|
}
|
|
})
|
|
};
|
|
e.prototype.removeStorage = function (e, t) {
|
|
wx.removeStorage({
|
|
key: e, success: function () {
|
|
"function" == typeof t && t(!0)
|
|
}, fail: function () {
|
|
"function" == typeof t && t(!1)
|
|
}
|
|
})
|
|
};
|
|
e.prototype.getSystemInfo = function (e) {
|
|
wx.getSystemInfo({
|
|
success: function (t) {
|
|
t.safeArea = t.safeArea || {};
|
|
var n = "";
|
|
t.host && "string" == typeof t.host.env && (n = t.host.env);
|
|
var i = {
|
|
model: t.model,
|
|
brand: t.brand,
|
|
pixelRatio: t.pixelRatio,
|
|
screenWidth: t.screenWidth,
|
|
screenHeight: t.screenHeight,
|
|
fontSizeSetting: t.fontSizeSetting,
|
|
platform: t.platform,
|
|
platformVersion: t.version,
|
|
platformSDKVersion: t.SDKVersion,
|
|
language: t.language,
|
|
deviceName: t.model,
|
|
OSVersion: t.system,
|
|
resolution: "",
|
|
theme: t.theme,
|
|
benchmarkLevel: t.benchmarkLevel,
|
|
safeArea: {
|
|
width: t.safeArea.width,
|
|
height: t.safeArea.height,
|
|
top: t.safeArea.top,
|
|
left: t.safeArea.left,
|
|
bottom: t.safeArea.bottom,
|
|
right: t.safeArea.right
|
|
},
|
|
statusBarHeight: t.statusBarHeight,
|
|
host: n
|
|
}, r = t.system.split(" ");
|
|
Array.isArray(r) && (i.OS = r[0]);
|
|
var o = Math.round(t.screenWidth * t.pixelRatio), s = Math.round(t.screenHeight * t.pixelRatio);
|
|
i.resolution = o > s ? o + "*" + s : s + "*" + o;
|
|
"function" == typeof e && e(i)
|
|
}, fail: function () {
|
|
"function" == typeof e && e()
|
|
}
|
|
})
|
|
};
|
|
e.prototype.getDeviceInfo = function (e) {
|
|
"function" == typeof e && e("")
|
|
};
|
|
e.prototype.checkNetworkAvailable = function (e) {
|
|
wx.getNetworkType({
|
|
success: function (t) {
|
|
"function" == typeof e && e(t && "none" !== t.networkType)
|
|
}, fail: function () {
|
|
"function" == typeof e && e(!1)
|
|
}
|
|
})
|
|
};
|
|
e.prototype.getNetworkInfo = function (e) {
|
|
wx.getNetworkType({
|
|
success: function (t) {
|
|
"function" == typeof e && e({networkAvailable: "none" !== t.networkType, networkType: t.networkType})
|
|
}, fail: function () {
|
|
"function" == typeof e && e()
|
|
}
|
|
})
|
|
};
|
|
e.prototype.getDeviceId = function (e) {
|
|
e("")
|
|
};
|
|
e.prototype.getAdvertisingId = function (e) {
|
|
"function" == typeof e && e("")
|
|
};
|
|
e.prototype.onNetworkStatusChange = function (e) {
|
|
wx.onNetworkStatusChange((function (t) {
|
|
"function" == typeof e && e(t.isConnected)
|
|
}))
|
|
};
|
|
e.prototype.request = function (e) {
|
|
var t = e.success, n = e.fail, i = !1, r = null;
|
|
e.success = function (e) {
|
|
if (!i) {
|
|
r && clearTimeout(r);
|
|
"function" == typeof t && t(e)
|
|
}
|
|
};
|
|
e.fail = function () {
|
|
if (!i) {
|
|
r && clearTimeout(r);
|
|
"function" == typeof n && n(!1)
|
|
}
|
|
};
|
|
wx.request(e);
|
|
r = setTimeout((function () {
|
|
r && clearTimeout(r);
|
|
i = !0;
|
|
"function" == typeof n && n(i)
|
|
}), e.timeout || 5e3)
|
|
};
|
|
e.prototype.getSdkType = function () {
|
|
return "wxmp"
|
|
};
|
|
e.prototype.getPlatform = function () {
|
|
return "wx"
|
|
};
|
|
e.prototype.getUserInfo = function (e) {
|
|
e()
|
|
};
|
|
e.prototype.getAppInfoSync = function () {
|
|
if (wx.getAccountInfoSync) {
|
|
var e = wx.getAccountInfoSync(), t = e && e.miniProgram ? e.miniProgram : {};
|
|
return {appId: t.appId, appEnv: t.envVersion, appVersion: t.version}
|
|
}
|
|
return {}
|
|
};
|
|
e.prototype.onShareAppMessage = function (e) {
|
|
wx.onShareAppMessage(e)
|
|
};
|
|
e.prototype.shareAppMessage = function (e) {
|
|
wx.shareAppMessage(e)
|
|
};
|
|
e.prototype.getLaunchOptionsSync = function () {
|
|
var e = null;
|
|
if (e) return e;
|
|
if (!wx.getLaunchOptionsSync) return {};
|
|
try {
|
|
e = wx.getLaunchOptionsSync()
|
|
} catch (t) {
|
|
e = null
|
|
}
|
|
return e || {}
|
|
};
|
|
return e
|
|
}())), u = {
|
|
SESSION_INTERVAL: 3e4,
|
|
LOG_URL: "/wxm_logs",
|
|
GET_OPENID_URL: "/uminiprogram_logs/wx/getuut",
|
|
USERINFO_URL: "/uminiprogram_logs/comm/uif",
|
|
ENDPOINT: "https://umini.shujupie.com",
|
|
ENDPOINTB: "https://ulogs.umeng.com",
|
|
DEVICE_INFO_KEY: "device_info",
|
|
ADVERTISING_ID: "mobile_ad_id",
|
|
ANDROID_ID: "android_id",
|
|
CURRENT_SESSION: "current_session",
|
|
SESSION_PAUSE_TIME: "session_pause_time",
|
|
EVENT_SEND_DEFAULT_INTERVAL: 15e3,
|
|
EVENT_LAST_SEND_TIME: "last_send_time",
|
|
MAX_EVENTID_LENGTH: 128,
|
|
MAX_PROPERTY_KEY_LENGTH: 256,
|
|
MAX_PROPERTY_KEYS_COUNT: 100,
|
|
REPORT_POLICY: "report_policy",
|
|
REPORT_INTERVAL_TIME: "report_interval_time",
|
|
REPORT_POLICY_START_SEND: "1",
|
|
REPORT_POLICY_INTERVAL: "6",
|
|
IMPRINT: "imprint",
|
|
SEED_VERSION: "1.0.0",
|
|
IMPL_VERSION: "2.8.2",
|
|
ALIPAY_AVAILABLE_VERSION: "10.1.52",
|
|
SHARE_PATH: "um_share_path",
|
|
SHARES: "shares",
|
|
REQUESTS: "requests",
|
|
UUID: "um_uuid",
|
|
UUID_SUFFIX: "ud",
|
|
OPENID: "um_od",
|
|
UNIONID: "um_unid",
|
|
ALIPAYID: "um_alipayid",
|
|
USERID: "um_userid",
|
|
PROVIDER: "um_provider",
|
|
SWANID: "um_swanid",
|
|
ANONYMOUSID: "um_anonymousid",
|
|
LAUNCH_OPTIONS: "LAUNCH_OPTIONS",
|
|
UM_SSRC: "_um_ssrc",
|
|
USER_INFO: "user_info",
|
|
IS_ALIYUN: !1
|
|
};
|
|
var c, f = {
|
|
isNumber: function (e) {
|
|
return !Number.isNaN(parseInt(e, 10))
|
|
}, compareVersion: function (e, t) {
|
|
for (var n = String(e).split("."), i = String(t).split("."), r = 0; r < Math.max(n.length, i.length); r++) {
|
|
var o = parseInt(n[r] || 0, 10), s = parseInt(i[r] || 0, 10);
|
|
if (o > s) return 1;
|
|
if (o < s) return -1
|
|
}
|
|
return 0
|
|
}, getRandomStr: function (e) {
|
|
for (var t = "", n = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"], i = 0; i < Number(e); i++) {
|
|
t += n[Math.round(Math.random() * (n.length - 1))]
|
|
}
|
|
return t
|
|
}, clone: function (e) {
|
|
return JSON.parse(JSON.stringify(e))
|
|
}, startsWith: function (e, t) {
|
|
return !(!e || !t || 0 === t.length || t.length > e.length) && e.substr(0, t.length) === t
|
|
}, endsWith: function (e, t) {
|
|
return !(!t || 0 === e.length || t.length > e.length) && e.substring(e.length - t.length) === t
|
|
}, assign: function (e) {
|
|
if (null == e) throw new TypeError("Cannot convert undefined or null to object");
|
|
for (var t = Object(e), n = 1; n < arguments.length; n++) {
|
|
var i = arguments[n];
|
|
if (i) for (var r in i) Object.prototype.hasOwnProperty.call(i, r) && (t[r] = i[r])
|
|
}
|
|
return t
|
|
}, deepEqual: function e(t, n) {
|
|
if (t === n) return !0;
|
|
if (t && "object" == typeof t && n && "object" == typeof n) {
|
|
if (Object.keys(t).length !== Object.keys(n).length) return !1;
|
|
for (var i in t) {
|
|
if (Object.prototype.hasOwnProperty.call(n, i)) return !1;
|
|
if (!e(t[i], n[i])) return !1
|
|
}
|
|
return !0
|
|
}
|
|
return !1
|
|
}, trimStart: function (e, t) {
|
|
if (!e) return "";
|
|
if ("string" == typeof t && t.length) {
|
|
var n = new RegExp("^" + t + "*");
|
|
e = e.replace(n, "")
|
|
} else e = e.replace(/^s*/, "");
|
|
return e
|
|
}, trimEnd: function (e, t) {
|
|
if (!e) return "";
|
|
var n, i;
|
|
if ("string" == typeof t && t.length) {
|
|
n = new RegExp(t);
|
|
i = e.length;
|
|
for (; n.test(e.charAt(i));) i -= 1;
|
|
return e.slice(0, i + 1)
|
|
}
|
|
n = /s/;
|
|
i = e.length - 1;
|
|
for (; n.test(e.charAt(i));) i -= 1;
|
|
return e.slice(0, i + 1)
|
|
}, isFunction: function (e) {
|
|
return "function" == typeof e
|
|
}
|
|
}, p = function (e) {
|
|
s(n, e);
|
|
|
|
function n() {
|
|
return null !== e && e.apply(this, arguments) || this
|
|
}
|
|
|
|
n.prototype.getOpenIdAsync = function (e, n) {
|
|
var i = this;
|
|
wx.login({
|
|
success: function (r) {
|
|
r.code ? a.request({
|
|
url: u.ENDPOINT + u.GET_OPENID_URL,
|
|
method: "GET",
|
|
data: {key: e, code: r.code},
|
|
success: function (e) {
|
|
if (e && 200 === e.statusCode && e.data && e.data.data) {
|
|
var t = e.data.data;
|
|
i.setOpenid(t.oid);
|
|
i.setUnionid(t.uid);
|
|
return n && n(!0)
|
|
}
|
|
n && n()
|
|
},
|
|
fail: function (e) {
|
|
t().v("wx request failed...", e);
|
|
n && n()
|
|
}
|
|
}) : n && n()
|
|
}, fail: function () {
|
|
n && n()
|
|
}
|
|
})
|
|
};
|
|
return n
|
|
}(function (e) {
|
|
s(n, e);
|
|
|
|
function n() {
|
|
var t = null !== e && e.apply(this, arguments) || this;
|
|
t._openid = "";
|
|
t._unionid = "";
|
|
t._useOpenid = !1;
|
|
return t
|
|
}
|
|
|
|
n.prototype.initID = function (e) {
|
|
var n = this;
|
|
n._idType = n._useOpenid ? "openid" : "uuid";
|
|
t().v("id type: ", n._idType);
|
|
a.getStorage(u.UNIONID, (function (e) {
|
|
n._unionid = e
|
|
}));
|
|
this._useOpenid ? a.getStorage(u.OPENID, (function (t) {
|
|
n._openid = t;
|
|
e && e()
|
|
})) : e && e()
|
|
};
|
|
n.prototype.setUseOpenid = function (e) {
|
|
this._useOpenid = e
|
|
};
|
|
n.prototype.setOpenid = function (e) {
|
|
if (!this._openid && e) {
|
|
this._openid = e;
|
|
a.setStorage(u.OPENID, e)
|
|
}
|
|
};
|
|
n.prototype.setUnionid = function (e) {
|
|
if (!this._unionid && e) {
|
|
this._unionid = e;
|
|
a.setStorage(u.UNIONID, e)
|
|
}
|
|
};
|
|
n.prototype.getIdTracking = function () {
|
|
var t = e.prototype.getIdTracking.call(this);
|
|
this._openid && (t.openid = this._openid);
|
|
this._unionid && (t.unionid = this._unionid);
|
|
this._userid && (t.userid = this._userid);
|
|
return t
|
|
};
|
|
n.prototype.getId = function () {
|
|
return this._useOpenid ? this._openid : this._uuid
|
|
};
|
|
return n
|
|
}(function () {
|
|
function e() {
|
|
this._uuid = "";
|
|
this._userid = "";
|
|
this._provider = "";
|
|
this._idType = ""
|
|
}
|
|
|
|
e.prototype.createUUID = function () {
|
|
return f.getRandomStr(10) + Date.now() + f.getRandomStr(7) + u.UUID_SUFFIX
|
|
};
|
|
e.prototype.initUUID = function (e) {
|
|
var t = this;
|
|
a.getStorage(u.UUID, (function (n) {
|
|
if (n) t._uuid = n; else {
|
|
t._uuid = t.createUUID();
|
|
a.setStorage(u.UUID, t._uuid)
|
|
}
|
|
e && e(n)
|
|
}))
|
|
};
|
|
e.prototype.initUserid = function () {
|
|
var e = this;
|
|
a.getStorage(u.USERID, (function (n) {
|
|
if (!e._userid && n) {
|
|
e._userid = n;
|
|
t().v("userId is ", n)
|
|
}
|
|
}));
|
|
a.getStorage(u.PROVIDER, (function (n) {
|
|
if (!e._provider && n) {
|
|
e._provider = n;
|
|
t().v("provider is ", n)
|
|
}
|
|
}))
|
|
};
|
|
e.prototype.init = function (e) {
|
|
var t = this;
|
|
t.initUUID((function () {
|
|
t.initUserid();
|
|
t.initID(e)
|
|
}))
|
|
};
|
|
e.prototype.setUserid = function (e, t) {
|
|
if (!this._userid && e) {
|
|
this._userid = e;
|
|
this._provider = t;
|
|
a.setStorage(u.USERID, e);
|
|
a.setStorage(u.PROVIDER, t)
|
|
}
|
|
};
|
|
e.prototype.removeUserid = function () {
|
|
this._userid = void 0;
|
|
this._provider = void 0;
|
|
a.removeStorageSync(u.USERID);
|
|
a.removeStorageSync(u.PROVIDER)
|
|
};
|
|
e.prototype.getUserId = function () {
|
|
return this._userid
|
|
};
|
|
e.prototype.getProvider = function () {
|
|
return this._provider
|
|
};
|
|
e.prototype.getIdType = function () {
|
|
return this._idType
|
|
};
|
|
e.prototype.getIdTracking = function () {
|
|
var e = {};
|
|
this._uuid && (e.uuid = this._uuid);
|
|
this._userid && (e.userid = this._userid);
|
|
return e
|
|
};
|
|
return e
|
|
}())), l = (c = null, function () {
|
|
c || (c = new p);
|
|
return c
|
|
}), d = function () {
|
|
var e = null;
|
|
|
|
function t() {
|
|
var e = !1, t = null, n = [];
|
|
this.addPageStart = function (n) {
|
|
if (n && !e) {
|
|
t = {ts: Date.now(), path: n, page_name: n};
|
|
e = !0
|
|
}
|
|
};
|
|
this.addPageEnd = function (i) {
|
|
if (e && i && t && i === t.page_name) {
|
|
var r = Date.now() - t.ts;
|
|
t.duration = Math.abs(r);
|
|
n.push(t);
|
|
t = null;
|
|
e = !1
|
|
}
|
|
};
|
|
this.get = function () {
|
|
return n
|
|
};
|
|
this.getCurrentPage = function () {
|
|
return t
|
|
};
|
|
this.clear = function () {
|
|
n.length = 0
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
e || (e = new t);
|
|
return e
|
|
}
|
|
}(), h = {};
|
|
var g = function () {
|
|
var e = null, n = [], i = "";
|
|
|
|
function r() {
|
|
return {
|
|
add: function (e, r) {
|
|
t().v("share origin: %o", e);
|
|
var o = {title: e && e.title, path: e && e.path && e.path.split("?")[0], _um_sts: Date.now()};
|
|
o.path && o.path.length > 1 && f.startsWith(o.path, "/") && (o.path = f.trimStart(o.path, "/"));
|
|
var s = e.path || "", a = l().getId();
|
|
if (a) {
|
|
var u = i.split(","), c = (u = u.filter((function (e) {
|
|
return e.length > 0
|
|
}))).indexOf(a);
|
|
c >= 0 && (u = u.slice(0, c));
|
|
u.length < 3 && u.push(a);
|
|
var p = u.join(",");
|
|
-1 !== s.indexOf("?") ? s += "&_um_ssrc=" + p : s += "?_um_ssrc=" + p;
|
|
var d = Date.now();
|
|
s += "&_um_sts=" + d;
|
|
if (r) {
|
|
var g = function (e) {
|
|
var t = [];
|
|
for (var n in e) "_um_ssrc" !== n && "_um_sts" !== n && t.push(n + "=" + e[n]);
|
|
return t.join("&")
|
|
}(h), v = g ? g + "&_um_ssrc=" + p + "&_um_sts=" + d : "_um_ssrc=" + p + "&_um_sts=" + d;
|
|
e.query = e.query ? e.query + "&_um_ssrc=" + p + "&_um_sts=" + d : v
|
|
} else e.path = s;
|
|
o._um_ssrc = p;
|
|
o._um_sts = d
|
|
}
|
|
n.push(o);
|
|
t().v("share: %o", e);
|
|
return e
|
|
}, setShareSource: function (e) {
|
|
i = e
|
|
}, clear: function () {
|
|
n.length = 0
|
|
}, get: function () {
|
|
return n
|
|
}
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
e || (e = new r);
|
|
return e
|
|
}
|
|
}(), v = function (e) {
|
|
if (e) try {
|
|
return JSON.stringify(e)
|
|
} catch (e) {
|
|
}
|
|
return ""
|
|
}, _ = function (e) {
|
|
if (e) try {
|
|
return JSON.parse(e)
|
|
} catch (e) {
|
|
}
|
|
return null
|
|
}, y = function () {
|
|
var e = null, t = "", i = null, r = !1;
|
|
|
|
function o() {
|
|
this.load = function (e) {
|
|
if (i) {
|
|
a.removeStorage(t);
|
|
e()
|
|
} else {
|
|
t = "um_cache_" + n().appKey();
|
|
a.getStorage(t, (function (n) {
|
|
i = _(n) || {};
|
|
r = !0;
|
|
a.removeStorage(t);
|
|
e()
|
|
}))
|
|
}
|
|
};
|
|
this.save = function () {
|
|
i && a.setStorage(t, v(i))
|
|
};
|
|
this.set = function (e, t) {
|
|
i && (i[e] = t)
|
|
};
|
|
this.get = function (e) {
|
|
return (i || {})[e]
|
|
};
|
|
this.remove = function (e) {
|
|
i && i[e] && delete i[e]
|
|
};
|
|
this.getAll = function () {
|
|
return i
|
|
};
|
|
this.clear = function () {
|
|
i = null
|
|
};
|
|
this.has = function (e) {
|
|
return !!this.get(e)
|
|
};
|
|
this.isLoaded = function () {
|
|
return r
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
e || (e = new o);
|
|
return e
|
|
}
|
|
}(), m = "ekvs", S = function () {
|
|
var e, n, i = [], r = [];
|
|
|
|
function o() {
|
|
if (i.length) {
|
|
var e = y().get(m);
|
|
if (function (e) {
|
|
var t = 0;
|
|
for (var n in e) Array.isArray(e[n]) && (t += e[n].length);
|
|
return t
|
|
}(e) + i.length <= 1e4) {
|
|
e = s(e, i);
|
|
y().set(m, e)
|
|
}
|
|
}
|
|
}
|
|
|
|
function s(e, t) {
|
|
var i = (e = e || {})[n];
|
|
Array.isArray(i) && i.length ? e[n] = i.concat(t) : e[n] = [].concat(t);
|
|
return e
|
|
}
|
|
|
|
return function () {
|
|
e || (e = {
|
|
addEvent: function (e) {
|
|
if (n) {
|
|
i.unshift(e);
|
|
if (i.length > 1) {
|
|
o();
|
|
i.length = 0
|
|
}
|
|
} else {
|
|
t().w("session id is null: ", n);
|
|
r.unshift(e)
|
|
}
|
|
}, setSessionId: function (e) {
|
|
n = e;
|
|
t().v("setSessionId: ", n);
|
|
if (Array.isArray(r) && r.length && n) {
|
|
for (var i = 0; i < r.length; i++) this.addEvent(r[i]);
|
|
r.length = 0
|
|
}
|
|
}, getEkvs: function () {
|
|
var e = y().get(m);
|
|
i && i.length && (e = s(e, i));
|
|
return e
|
|
}, clear: function () {
|
|
y().remove(m);
|
|
i.length = 0
|
|
}
|
|
});
|
|
return e
|
|
}
|
|
}(), I = "2g", E = "3g", O = "4g", A = "half_session", N = "close_session", T = "ekv", w = ["access", "access_subtype"],
|
|
k = function () {
|
|
var e = null;
|
|
|
|
function t() {
|
|
var e = !1, t = {};
|
|
|
|
function i(e) {
|
|
var i = y().get(u.IMPRINT);
|
|
i && (t.imprint = i);
|
|
t.device_type = "Phone";
|
|
t.sdk_version = u.IMPL_VERSION;
|
|
t.appkey = n().appKey();
|
|
a.getDeviceInfo((function (e) {
|
|
t.device_info = e || ""
|
|
}));
|
|
var r = a.getAppInfoSync();
|
|
t.appid = r.appId;
|
|
t.app_env = r.appEnv;
|
|
t.app_version = r.appVersion;
|
|
a.getSystemInfo((function (n) {
|
|
a.getNetworkInfo((function (i) {
|
|
var r = function (e, t) {
|
|
var n = {};
|
|
e = e || {};
|
|
e.safeArea = e.safeArea || {};
|
|
t = t || {};
|
|
var i = t.networkType;
|
|
"none" === i && (i = "unknown");
|
|
var r = e.model || "", o = e.platform || "", s = e.brand || "", u = s.toLowerCase();
|
|
n.sdk_type = a.getSdkType();
|
|
n.platform = a.getPlatform();
|
|
n.platform_sdk_version = e.platformSDKVersion;
|
|
n.platform_version = e.platformVersion;
|
|
n.resolution = e.resolution;
|
|
n.pixel_ratio = e.pixelRatio;
|
|
n.os = o;
|
|
n.font_size_setting = e.fontSizeSetting;
|
|
n.device_model = r;
|
|
n.device_brand = s;
|
|
n.device_manufacturer = u;
|
|
n.device_manuid = r;
|
|
n.device_name = r;
|
|
n.os_version = e.OSVersion;
|
|
n.language = e.language;
|
|
n.theme = e.theme;
|
|
n.benchmark_level = e.benchmarkLevel;
|
|
n.status_bar_height = e.statusBarHeight;
|
|
n.safe_area_top = e.safeArea.top;
|
|
n.safe_area_left = e.safeArea.left;
|
|
n.safe_area_right = e.safeArea.right;
|
|
n.safe_area_bottom = e.safeArea.bottom;
|
|
n.safe_area_height = e.safeArea.height;
|
|
n.safe_area_width = e.safeArea.width;
|
|
n.storage = e.storage;
|
|
n.screen_width = e.screenWidth;
|
|
n.screen_height = e.screenHeight;
|
|
n.host = e.host;
|
|
switch (i = i ? i.toLowerCase() : "") {
|
|
case O:
|
|
n.access_subtype = "LTE";
|
|
n.access = "4G";
|
|
break;
|
|
case E:
|
|
n.access_subtype = "CDMA";
|
|
n.access = "3G";
|
|
break;
|
|
case I:
|
|
n.access_subtype = "GRPS";
|
|
n.access = "2G";
|
|
break;
|
|
default:
|
|
n.access = i;
|
|
delete n.access_subtype
|
|
}
|
|
return n
|
|
}(n, i);
|
|
f.assign(t, r);
|
|
e && e()
|
|
}))
|
|
}))
|
|
}
|
|
|
|
return {
|
|
init: function () {
|
|
i((function () {
|
|
e = !0
|
|
}))
|
|
}, isLoaded: function () {
|
|
return e
|
|
}, get: function () {
|
|
return t
|
|
}, getRealtimeFields: function () {
|
|
var e = {};
|
|
w.forEach((function (n) {
|
|
e[n] = t[n]
|
|
}));
|
|
return e
|
|
}, setIdTracking: function (e) {
|
|
this.setItem("id_tracking", e)
|
|
}, setIdType: function (e) {
|
|
this.setItem("id_type", e)
|
|
}, setAppVersion: function (e) {
|
|
this.setItem("app_version", e)
|
|
}, setSuperProperty: function (e) {
|
|
t.sp || (t.sp = {});
|
|
t.sp.isv = e
|
|
}, getSuperProperty: function () {
|
|
return t && t.sp ? t.sp.isv : ""
|
|
}, setItem: function (e, n) {
|
|
t[e] = n
|
|
}, getItem: function (e) {
|
|
return t[e]
|
|
}
|
|
}
|
|
}
|
|
|
|
return {
|
|
instance: function () {
|
|
e || (e = t());
|
|
return e
|
|
}
|
|
}
|
|
}(), b = function () {
|
|
var e = null, n = null, i = null;
|
|
|
|
function r() {
|
|
return {
|
|
resume: function (e) {
|
|
var r = !1;
|
|
i || (i = y().get(u.CURRENT_SESSION));
|
|
var o = new Date;
|
|
n = o.getTime();
|
|
if (!i || !i.end_time || n - i.end_time > u.SESSION_INTERVAL) {
|
|
r = !0;
|
|
!function (e) {
|
|
try {
|
|
var n = (i || {}).options || {}, r = f.assign({}, function (e) {
|
|
var n = {};
|
|
for (var i in e) 0 === i.indexOf("_um_") && (n[i] = e[i]);
|
|
t().v("query: ", e);
|
|
t().v("_um_params: ", n);
|
|
return n
|
|
}(e.query));
|
|
r.path = e.path || n.path;
|
|
"gaode" !== a.getPlatform() && (r.scene = e.scene ? a.getPlatform() + "_" + e.scene : n.scene);
|
|
var o = e.referrerInfo;
|
|
o && (r.referrerAppId = o.appId);
|
|
t().v("session options: ", r);
|
|
var s = r[u.UM_SSRC];
|
|
s && g().setShareSource(s);
|
|
var c = Date.now();
|
|
i = {id: f.getRandomStr(10) + c, start_time: c, options: r}
|
|
} catch (e) {
|
|
t().e("生成新session失败: ", e)
|
|
}
|
|
}(e);
|
|
t().v("开始新的session(%s): ", i.id, i)
|
|
} else t().v("延续上一次session(%s): %s ", i.id, o.toLocaleTimeString(), i);
|
|
return r
|
|
}, pause: function () {
|
|
!function () {
|
|
if (i) {
|
|
var e = new Date;
|
|
i.end_time = e.getTime();
|
|
"number" != typeof i.duration && (i.duration = 0);
|
|
i.duration = i.end_time - n;
|
|
y().set(u.CURRENT_SESSION, i);
|
|
t().v("退出会话(%s): %s ", i.id, e.toLocaleTimeString(), i)
|
|
}
|
|
}()
|
|
}, getCurrentSessionId: function () {
|
|
return (i || {}).id
|
|
}, getCurrentSession: function () {
|
|
return i
|
|
}, cloneCurrentSession: function () {
|
|
return f.clone(i)
|
|
}
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
e || (e = r());
|
|
return e
|
|
}
|
|
}();
|
|
|
|
function D(e) {
|
|
var t = null;
|
|
switch (e) {
|
|
case A:
|
|
t = function () {
|
|
var e = null, t = b().cloneCurrentSession();
|
|
t && (e = {header: {st: "1"}, analytics: {sessions: [t]}});
|
|
return e
|
|
}();
|
|
break;
|
|
case N:
|
|
t = function () {
|
|
var e = null, t = {}, n = b().cloneCurrentSession();
|
|
if (n) {
|
|
var i = d().get(), r = g().get();
|
|
Array.isArray(i) && i.length && (n.pages = f.clone(i));
|
|
Array.isArray(r) && r.length && (n.shares = f.clone(r));
|
|
d().clear();
|
|
g().clear();
|
|
t.sessions = [n]
|
|
}
|
|
var o = S().getEkvs();
|
|
if (o) {
|
|
t.ekvs = f.clone(o);
|
|
S().clear()
|
|
}
|
|
(t.sessions || t.ekvs) && (e = {analytics: t});
|
|
return e
|
|
}();
|
|
break;
|
|
case T:
|
|
t = function () {
|
|
var e = null, t = S().getEkvs();
|
|
if (t) {
|
|
e = {analytics: {ekvs: f.clone(t)}};
|
|
S().clear()
|
|
}
|
|
return e
|
|
}()
|
|
}
|
|
return t
|
|
}
|
|
|
|
var R = {sessions: "sn", ekvs: "e", active_user: "active_user"}, U = {
|
|
sdk_type: "sdt",
|
|
access: "ac",
|
|
access_subtype: "acs",
|
|
device_model: "dm",
|
|
language: "lang",
|
|
device_type: "dt",
|
|
device_manufacturer: "dmf",
|
|
device_name: "dn",
|
|
platform_version: "pv",
|
|
id_type: "it",
|
|
font_size_setting: "fss",
|
|
os_version: "ov",
|
|
device_manuid: "did",
|
|
platform_sdk_version: "psv",
|
|
device_brand: "db",
|
|
appkey: "ak",
|
|
_id: "id",
|
|
id_tracking: "itr",
|
|
imprint: "imp",
|
|
sdk_version: "sv",
|
|
resolution: "rl",
|
|
testToken: "ttn",
|
|
theme: "t5",
|
|
benchmark_level: "bml",
|
|
screen_width: "sw",
|
|
screen_height: "sh",
|
|
status_bar_height: "sbh",
|
|
safe_area_top: "sat",
|
|
safe_area_left: "sal",
|
|
safe_area_right: "sar",
|
|
safe_area_bottom: "sab",
|
|
safe_area_height: "sah",
|
|
safe_area_width: "saw",
|
|
pixel_ratio: "pr",
|
|
storage: "s7",
|
|
host: "hs"
|
|
}, P = {uuid: "ud", unionid: "und", openid: "od", anonymousid: "nd", alipay_id: "ad", device_id: "dd", userid: "puid"};
|
|
|
|
function L(e, t) {
|
|
var n = C(e, t);
|
|
e && e.id_tracking && (n[t.id_tracking || "id_tracking"] = C(e.id_tracking, P));
|
|
return n
|
|
}
|
|
|
|
function C(e, t) {
|
|
var n = {};
|
|
for (var i in e) t[i] ? n[t[i]] = e[i] : n[i] = e[i];
|
|
return n
|
|
}
|
|
|
|
function M(e, t) {
|
|
var n = {};
|
|
if (e) for (var i in e) e[i] && (n[t[i]] = e[i]);
|
|
return n
|
|
}
|
|
|
|
var x = "";
|
|
|
|
function V() {
|
|
return x
|
|
}
|
|
|
|
var j = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", G = function (e) {
|
|
for (var t = {}, n = 0, i = e.length; n < i; n++) t[e.charAt(n)] = n;
|
|
return t
|
|
}(j), K = String.fromCharCode, F = function (e) {
|
|
if (e.length < 2) {
|
|
return (t = e.charCodeAt(0)) < 128 ? e : t < 2048 ? K(192 | t >>> 6) + K(128 | 63 & t) : K(224 | t >>> 12 & 15) + K(128 | t >>> 6 & 63) + K(128 | 63 & t)
|
|
}
|
|
var t = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320);
|
|
return K(240 | t >>> 18 & 7) + K(128 | t >>> 12 & 63) + K(128 | t >>> 6 & 63) + K(128 | 63 & t)
|
|
}, q = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, H = function (e) {
|
|
var t = [0, 2, 1][e.length % 3],
|
|
n = e.charCodeAt(0) << 16 | (e.length > 1 ? e.charCodeAt(1) : 0) << 8 | (e.length > 2 ? e.charCodeAt(2) : 0);
|
|
return [j.charAt(n >>> 18), j.charAt(n >>> 12 & 63), t >= 2 ? "=" : j.charAt(n >>> 6 & 63), t >= 1 ? "=" : j.charAt(63 & n)].join("")
|
|
}, B = function (e) {
|
|
return t = function (e) {
|
|
return e.replace(q, F)
|
|
}(e), t.replace(/[\s\S]{1,3}/g, H);
|
|
var t
|
|
}, Y = new RegExp(["[À-ß][-¿]", "[à-ï][-¿]{2}", "[ð-÷][-¿]{3}"].join("|"), "g"), W = function (e) {
|
|
switch (e.length) {
|
|
case 4:
|
|
var t = ((7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3)) - 65536;
|
|
return K(55296 + (t >>> 10)) + K(56320 + (1023 & t));
|
|
case 3:
|
|
return K((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2));
|
|
default:
|
|
return K((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1))
|
|
}
|
|
}, J = function (e) {
|
|
var t = e.length, n = t % 4,
|
|
i = (t > 0 ? G[e.charAt(0)] << 18 : 0) | (t > 1 ? G[e.charAt(1)] << 12 : 0) | (t > 2 ? G[e.charAt(2)] << 6 : 0) | (t > 3 ? G[e.charAt(3)] : 0),
|
|
r = [K(i >>> 16), K(i >>> 8 & 255), K(255 & i)];
|
|
r.length -= [0, 0, 2, 1][n];
|
|
return r.join("")
|
|
}, X = function (e) {
|
|
return t = function (e) {
|
|
return e.replace(/[\s\S]{1,4}/g, J)
|
|
}(e), t.replace(Y, W);
|
|
var t
|
|
}, z = function (e, t) {
|
|
return t ? B(String(e)).replace(/[+\/]/g, (function (e) {
|
|
return "+" == e ? "-" : "_"
|
|
})).replace(/=/g, "") : B(String(e))
|
|
}, Q = function (e) {
|
|
return X(String(e).replace(/[-_]/g, (function (e) {
|
|
return "-" == e ? "+" : "/"
|
|
})).replace(/[^A-Za-z0-9\+\/]/g, ""))
|
|
};
|
|
var Z = new function () {
|
|
var e = "", t = this;
|
|
this.set = function (t) {
|
|
e = t
|
|
};
|
|
this.get = function () {
|
|
return e
|
|
};
|
|
this.getImpObj = function () {
|
|
return _(Q(e))
|
|
};
|
|
this.getItem = function (e) {
|
|
var n = t.getImpObj();
|
|
return n && n[e] || ""
|
|
};
|
|
this.load = function () {
|
|
e = y().get(u.IMPRINT)
|
|
};
|
|
this.save = function () {
|
|
e && y().set(u.IMPRINT, e)
|
|
}
|
|
};
|
|
|
|
function $(e, n, i, r) {
|
|
k.instance().setIdType(l().getIdType());
|
|
k.instance().setIdTracking(l().getIdTracking());
|
|
var o = l().getUserId();
|
|
o && e.analytics && (e.analytics.active_user = {puid: o, provider: l().getProvider()});
|
|
var s = f.clone(k.instance().get());
|
|
e.header = f.assign(s, e.header, {
|
|
ts: Date.now(),
|
|
testToken: V(),
|
|
traceId: f.getRandomStr(10) + Date.now() + f.getRandomStr(9)
|
|
});
|
|
var c, p = function (e) {
|
|
return {h: L(e.header, U), a: M(e.analytics, R)}
|
|
}(e), d = v(p);
|
|
c = p;
|
|
var h = {
|
|
url: u.ENDPOINT + u.LOG_URL, method: "POST", data: c, success: function (r) {
|
|
var o = r.code || r.status || r.statusCode;
|
|
if (200 === o || 413 === o) {
|
|
t().i("数据发送成功: ", e, d);
|
|
!function (e) {
|
|
if (e) {
|
|
k.instance().setItem(u.IMPRINT, e);
|
|
Z.set(e);
|
|
Z.save();
|
|
t().v("imprint: ", Z.getImpObj());
|
|
Z.getItem("ttn_invalid") && (x = "")
|
|
}
|
|
}((r.data || {}).imprint);
|
|
"function" == typeof n && n(r)
|
|
} else {
|
|
t().w("数据发送失败: ", d);
|
|
"function" == typeof i && i()
|
|
}
|
|
}, fail: function (e) {
|
|
t().w("超时: ", d);
|
|
"function" == typeof i && i()
|
|
}, complete: function () {
|
|
"function" == typeof r && r()
|
|
}
|
|
};
|
|
a.request(f.assign(h, {
|
|
header: {
|
|
"Msg-Type": a.getSdkType() + "/json",
|
|
"disable-base64": "Y",
|
|
"content-type": "application/json"
|
|
}
|
|
}))
|
|
}
|
|
|
|
function ee(e) {
|
|
var t = e, n = [];
|
|
this.enqueue = function (e) {
|
|
"number" == typeof t && this.size() >= t && this.dequeue();
|
|
n.push(e)
|
|
};
|
|
this.dequeue = function () {
|
|
return n.shift()
|
|
};
|
|
this.front = function () {
|
|
return n[0]
|
|
};
|
|
this.isEmpty = function () {
|
|
return 0 === n.length
|
|
};
|
|
this.clear = function () {
|
|
n.length = 0
|
|
};
|
|
this.size = function () {
|
|
return n.length
|
|
};
|
|
this.items = function () {
|
|
return n
|
|
};
|
|
this.print = function () {
|
|
console.log(n.toString())
|
|
}
|
|
}
|
|
|
|
var te = function () {
|
|
var e = null, n = !1, i = [], r = new ee(50);
|
|
|
|
function o(e, t, n) {
|
|
if (k.instance().isLoaded()) {
|
|
t = t || {};
|
|
var i = D(e);
|
|
if (i) {
|
|
var s = k.instance().getRealtimeFields();
|
|
i.header = f.assign({}, i.header, s);
|
|
i.noCache = t.noCache;
|
|
r.enqueue(i)
|
|
}
|
|
"function" == typeof n && n()
|
|
} else setTimeout((function () {
|
|
o(e, t, n)
|
|
}), 100)
|
|
}
|
|
|
|
function s(e) {
|
|
var t = r.front();
|
|
if (t) $(t, (function () {
|
|
r.dequeue();
|
|
s(e)
|
|
}), (function () {
|
|
var t = r.dequeue();
|
|
t && !t.noCache && i.push(t);
|
|
s(e)
|
|
})); else {
|
|
!function () {
|
|
i.forEach((function (e) {
|
|
r.enqueue(e)
|
|
}));
|
|
i.length = 0
|
|
}();
|
|
e()
|
|
}
|
|
}
|
|
|
|
function a(e) {
|
|
if (l().getId()) if (n) t().i("队列正在发送中"); else {
|
|
n = !0;
|
|
s((function () {
|
|
n = !1;
|
|
"function" == typeof e && e()
|
|
}))
|
|
} else {
|
|
t().i("获取id标识失败,暂缓发送");
|
|
"function" == typeof e && e()
|
|
}
|
|
}
|
|
|
|
function c() {
|
|
this.send = function (e, t, n) {
|
|
e ? this.add(e, t, (function () {
|
|
a(n)
|
|
})) : a(n)
|
|
};
|
|
this.add = function (e, t, n) {
|
|
o(e, t, n)
|
|
};
|
|
this.load = function () {
|
|
var e = y().get(u.REQUESTS);
|
|
e && e.length && e.forEach((function (e) {
|
|
r.enqueue(e)
|
|
}));
|
|
y().remove(u.REQUESTS)
|
|
};
|
|
this.save = function () {
|
|
y().set(u.REQUESTS, f.clone(r.items()));
|
|
r.clear()
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
e || (e = new c);
|
|
return e
|
|
}
|
|
}(), ne = function () {
|
|
var e = null, i = null;
|
|
|
|
function r() {
|
|
this.setUserInfo = function (e) {
|
|
i = e
|
|
};
|
|
this.update = function () {
|
|
e(i) || a.getUserInfo((function (t) {
|
|
e(t)
|
|
}))
|
|
};
|
|
|
|
function e(e) {
|
|
if (e && "object" == typeof e) {
|
|
var i = y().get(u.USER_INFO);
|
|
i && f.deepEqual(e, i) || function (e, i) {
|
|
var r = n().appKey(), o = a.getSdkType(), s = l().getId(), c = l().getIdType();
|
|
if (!(r && o && s && c)) return;
|
|
var f = {
|
|
ak: n().appKey(),
|
|
sdt: a.getSdkType(),
|
|
uin: e.nickName,
|
|
uia: e.avatar || e.avatarUrl,
|
|
uig: e.gender,
|
|
uit: e.country,
|
|
uip: e.province,
|
|
uic: e.city,
|
|
uil: e.language,
|
|
id: l().getId(),
|
|
it: l().getIdType(),
|
|
age: e.age,
|
|
cln: e.constellation
|
|
}, p = JSON.stringify(f);
|
|
p = z(p);
|
|
a.request({
|
|
url: u.ENDPOINT + u.USERINFO_URL,
|
|
method: "POST",
|
|
header: {"content-type": "application/x-www-form-urlencoded"},
|
|
data: "ui=" + p,
|
|
success: function (n) {
|
|
t().v("用户信息上传成功: ", e);
|
|
i && i(n && n.data && 200 === n.data.code)
|
|
},
|
|
fail: function () {
|
|
t().e("用户信息上传失败: ", e);
|
|
i && i(!1)
|
|
}
|
|
})
|
|
}(e, (function (t) {
|
|
t && y().set(u.USER_INFO, e)
|
|
}));
|
|
return !0
|
|
}
|
|
return !1
|
|
}
|
|
}
|
|
|
|
return function () {
|
|
e || (e = new r);
|
|
return e
|
|
}
|
|
}();
|
|
|
|
function ie(e, t) {
|
|
this.id = e;
|
|
this.ts = Date.now();
|
|
var n = typeof t;
|
|
if ("string" === n && t) this[e] = t; else if ("object" === n) for (var i in t) ({}).hasOwnProperty.call(t, i) && (this[i] = t[i])
|
|
}
|
|
|
|
function re() {
|
|
var e = !1, i = !1, r = 0;
|
|
this.init = function (i) {
|
|
t().v("sdk version: " + u.IMPL_VERSION);
|
|
e ? t().v("Lib重复实例化") : y().load((function () {
|
|
t().v("cache初始化成功: ", y().getAll());
|
|
!function () {
|
|
l().setUseOpenid && l().setUseOpenid(n().useOpenid());
|
|
l().init((function () {
|
|
k.instance().init();
|
|
t().v("Header初始化成功")
|
|
}))
|
|
}();
|
|
e = !0;
|
|
"function" == typeof i && i();
|
|
t().tip("SDK集成成功")
|
|
}))
|
|
};
|
|
this.resume = function (r) {
|
|
if (e && !i) {
|
|
t().v("showOptions: ", r);
|
|
var o;
|
|
i = !0;
|
|
n().enableVerify() && r && r.query && (o = r.query._ttn, x = o || x);
|
|
this._resume(r)
|
|
}
|
|
};
|
|
this._resume = function (e) {
|
|
te().load();
|
|
var i = b().resume(e), r = b().getCurrentSessionId();
|
|
S().setSessionId(r);
|
|
i && te().add(A, {}, (function () {
|
|
l().setUseOpenid && l().setUseOpenid(n().useOpenid());
|
|
if (n().useOpenid() && n().autoGetOpenid() && !l().getId()) {
|
|
t().v("get id async");
|
|
o(10, 3e3)
|
|
} else {
|
|
t().v("session auto send");
|
|
te().send()
|
|
}
|
|
}));
|
|
|
|
function o(e, i) {
|
|
l().getId() || e <= 0 || l().getOpenIdAsync(n().appKey(), (function (n) {
|
|
if (n) {
|
|
t().v("获取id成功");
|
|
te().send()
|
|
} else {
|
|
t().v("获取openid失败,启动重试,剩余可用次数", e - 1);
|
|
setTimeout((function () {
|
|
o(e - 1, i)
|
|
}), i)
|
|
}
|
|
}))
|
|
}
|
|
};
|
|
this.pause = function (o) {
|
|
if (e) {
|
|
i = !1;
|
|
r = 0;
|
|
b().pause();
|
|
n().uploadUserInfo() && ne().update();
|
|
te().send(N, {}, (function () {
|
|
te().save();
|
|
y().save();
|
|
t().v("cache save success");
|
|
"function" == typeof o && o()
|
|
}))
|
|
}
|
|
};
|
|
this.setOpenid = function (e) {
|
|
t().v("setOpenId: %s", e);
|
|
l().setOpenid(e);
|
|
te().send()
|
|
};
|
|
this.setUnionid = function (e) {
|
|
t().v("setUnionid: %s", e);
|
|
l().setUnionid(e)
|
|
};
|
|
this.setUserid = function (e, n) {
|
|
t().v("setUserid: %s", e, n);
|
|
l().setUserid(e, n)
|
|
};
|
|
this.removeUserid = function () {
|
|
t().v("removeUserid");
|
|
l().removeUserid()
|
|
};
|
|
this.setUserInfo = function (e) {
|
|
t().v("setUserInfo: %s", e);
|
|
ne().setUserInfo(e)
|
|
};
|
|
this.setAnonymousid = function (e) {
|
|
t().v("setAnonymousId: %s", e);
|
|
l().setAnonymousid(e);
|
|
te().send()
|
|
};
|
|
this.setAppVersion = function (e) {
|
|
e && "string" != typeof e ? t().w("setAppVersion方法只接受字符串类型参数") : k.instance().setAppVersion(e)
|
|
};
|
|
this.setAlipayUserid = function (e) {
|
|
if (e && "string" != typeof e) t().w("setAlipayUserid方法只接受字符串类型参数"); else {
|
|
t().v("setAlipayUserid: %s", e);
|
|
l().setAlipayUserid(e)
|
|
}
|
|
};
|
|
this.setDeviceId = function (e) {
|
|
if ("string" == typeof e) {
|
|
l().setDeviceId(e);
|
|
return e
|
|
}
|
|
};
|
|
this.setSuperProperty = function (e) {
|
|
if (e && "string" != typeof e) t().w("超级属性只支持字符串类型"); else {
|
|
var n = this;
|
|
if (k.instance().getSuperProperty() !== e) {
|
|
k.instance().setSuperProperty(e);
|
|
n.pause((function () {
|
|
n.resume()
|
|
}))
|
|
}
|
|
}
|
|
};
|
|
this.trackEvent = function (n, i) {
|
|
if (e) {
|
|
t().v("event: ", n, i);
|
|
if (function (e, n) {
|
|
if (!e || "string" != typeof e) {
|
|
t().e('please check trackEvent id. id should be "string" and not null');
|
|
return !1
|
|
}
|
|
var i = ["id", "ts", "du"], r = {};
|
|
i.forEach((function (e) {
|
|
r[e] = 1
|
|
}));
|
|
if (r[e]) {
|
|
t().e("eventId不能与以下保留字冲突: " + i.join(","));
|
|
return !1
|
|
}
|
|
if (e.length > u.MAX_EVENTID_LENGTH) {
|
|
t().e("The maximum length of event id shall not exceed " + u.MAX_EVENTID_LENGTH);
|
|
return !1
|
|
}
|
|
if (n && ("object" != typeof n || Array.isArray(n)) && "string" != typeof n) {
|
|
t().e("please check trackEvent properties. properties should be string or object(not include Array)");
|
|
return !1
|
|
}
|
|
if ("object" == typeof n) {
|
|
var o = 0;
|
|
for (var s in n) if ({}.hasOwnProperty.call(n, s)) {
|
|
if (s.length > u.MAX_PROPERTY_KEY_LENGTH) {
|
|
t().e("The maximum length of property key shall not exceed " + u.MAX_PROPERTY_KEY_LENGTH);
|
|
return !1
|
|
}
|
|
if (o >= u.MAX_PROPERTY_KEYS_COUNT) {
|
|
t().e("The maximum count of properties shall not exceed " + u.MAX_PROPERTY_KEYS_COUNT);
|
|
return !1
|
|
}
|
|
if (r[s]) {
|
|
t().e("属性中的key不能与以下保留字冲突: " + i.join(","));
|
|
return !1
|
|
}
|
|
o += 1
|
|
}
|
|
}
|
|
return !0
|
|
}(n, i)) {
|
|
var o = new ie(n, i);
|
|
S().addEvent(o);
|
|
var s = !!V(), a = s ? 0 : u.EVENT_SEND_DEFAULT_INTERVAL, c = Date.now();
|
|
if (function (e, t) {
|
|
return "number" != typeof r || "number" != typeof t || r <= 0 || e - r > t
|
|
}(c, a)) {
|
|
r = c;
|
|
te().send(T, {noCache: s}, (function () {
|
|
}))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.trackShare = function (n) {
|
|
if (e) try {
|
|
if (a.getSdkType().indexOf("game") > -1) {
|
|
n = g().add(n, !0);
|
|
t().v("shareQuery: ", n)
|
|
} else {
|
|
n = g().add(n, !1);
|
|
t().v("sharePath: ", n.path)
|
|
}
|
|
} catch (e) {
|
|
t().v("shareAppMessage: ", e)
|
|
}
|
|
return n
|
|
};
|
|
this.trackPageStart = function (t) {
|
|
e && d().addPageStart(t)
|
|
};
|
|
this.trackPageEnd = function (t) {
|
|
e && d().addPageEnd(t)
|
|
};
|
|
this.onShareAppMessage = function (e) {
|
|
var t = this;
|
|
a.onShareAppMessage((function () {
|
|
return t.trackShare(e())
|
|
}))
|
|
};
|
|
this.shareAppMessage = function (e) {
|
|
this.trackShare(e);
|
|
a.shareAppMessage(e)
|
|
}
|
|
}
|
|
|
|
var oe = [];
|
|
|
|
function se() {
|
|
}
|
|
|
|
se.prototype = {
|
|
createMethod: function (e, n, i) {
|
|
try {
|
|
e[n] = i && i[n] ? function () {
|
|
return i[n].apply(i, arguments)
|
|
} : function () {
|
|
oe.push([n, [].slice.call(arguments)])
|
|
}
|
|
} catch (e) {
|
|
t().v("create method errror: ", e)
|
|
}
|
|
}, installApi: function (e, n) {
|
|
try {
|
|
var i, r,
|
|
o = "resume,pause,trackEvent,trackPageStart,trackPageEnd,trackShare,setUserid,setOpenid,setUnionid,onShareAppMessage,shareAppMessage".split(",");
|
|
for (i = 0, r = o.length; i < r; i++) this.createMethod(e, o[i], n);
|
|
if (n) for (i = 0, r = oe.length; i < r; i++) {
|
|
var s = oe[i];
|
|
try {
|
|
n[s[0]].apply(n, s[1])
|
|
} catch (e) {
|
|
t().v("impl[v[0]].apply error: ", s[0], e)
|
|
}
|
|
}
|
|
} catch (e) {
|
|
t().v("install api errror: ", e)
|
|
}
|
|
}
|
|
};
|
|
var ae = [u.ENDPOINT, u.ENDPOINTB];
|
|
|
|
function ue(e, n) {
|
|
var i, r;
|
|
0 === e || 1 === e && n ? i = u.ENDPOINT : 2 === e && n ? i = u.ENDPOINTB : n && (i = ae[e]);
|
|
if (e >= ae.length || n) {
|
|
n && (r = i, u.ENDPOINT = r);
|
|
n && t().v("命中可用服务", i);
|
|
!n && t().tip_w("未命中可用服务");
|
|
return !1
|
|
}
|
|
a.request({
|
|
url: u.ENDPOINT + "/uminiprogram_logs/ckdh", success: function (t) {
|
|
200 === (t.code || t.status || t.statusCode) && t.data && 200 === t.data.code ? ue(e + 1, !0) : ue(e + 1, !1)
|
|
}, fail: function () {
|
|
ue(e + 1, !1)
|
|
}
|
|
})
|
|
}
|
|
|
|
var ce = {
|
|
init: function (e) {
|
|
u.ENDPOINTB && setTimeout((function () {
|
|
ue(0, !1)
|
|
}), e)
|
|
}
|
|
}, fe = new se, pe = {
|
|
_inited: !1, _log: t(), preinit: function (e) {
|
|
if (e && "object" == typeof e) for (var t in e) u[t] = e[t];
|
|
return u
|
|
}, use: function (e, t) {
|
|
e && f.isFunction(e.install) ? e.install(pe, t) : f.isFunction(e) && e(pe, t);
|
|
return pe
|
|
}, messager: r, init: function (e) {
|
|
if (this._inited) t().v("已经实例过,请避免重复初始化"); else if (e) if (e.appKey) {
|
|
"boolean" != typeof e.useOpenid && (e.useOpenid = !0);
|
|
n().set(e);
|
|
t().setDebug(e.debug);
|
|
this._inited = !0;
|
|
var i = this;
|
|
r.emit(r.messageType.CONFIG_LOADED, e);
|
|
try {
|
|
var o = new re;
|
|
t().v("成功创建Lib对象");
|
|
0;
|
|
o.init((function () {
|
|
t().v("Lib对象初始化成功");
|
|
fe.installApi(i, o);
|
|
t().v("安装Lib接口成功");
|
|
r.emit(r.messageType.UMA_LIB_INITED, e)
|
|
}));
|
|
ce.init(3e3)
|
|
} catch (e) {
|
|
t().w("创建Lib对象异常: " + e)
|
|
}
|
|
} else t().err("请确保传入正确的appkey"); else t().err("请正确设置相关信息!")
|
|
}
|
|
};
|
|
try {
|
|
fe.installApi(pe, null)
|
|
} catch (e) {
|
|
t().w("uma赋值异常: ", e)
|
|
}
|
|
var le = {
|
|
FETCH_URL: "https://ucc.umeng.com/v1/mini/fetch",
|
|
ABLOG_URL: "https://pslog.umeng.com/mini_ablog",
|
|
SDK_VERSION: "2.8.2",
|
|
MOBILE_NETWORK_NONE: "none",
|
|
MOBILE_NETWORK_2G: "2g",
|
|
MOBILE_NETWORK_3G: "3g",
|
|
MOBILE_NETWORK_4G: "4g",
|
|
MOBILE_NETWORK_5G: "5g",
|
|
MOBILE_NETWORK_WIFI: "wifi",
|
|
IMPRINT: "imprint"
|
|
}, de = {}, he = Array.isArray;
|
|
de.isArray = he || function (e) {
|
|
return "[object Array]" === toString.call(e)
|
|
};
|
|
de.isObject = function (e) {
|
|
return e === Object(e) && !de.isArray(e)
|
|
};
|
|
de.isEmptyObject = function (e) {
|
|
if (de.isObject(e)) {
|
|
for (var t in e) if (hasOwnProperty.call(e, t)) return !1;
|
|
return !0
|
|
}
|
|
return !1
|
|
};
|
|
de.isUndefined = function (e) {
|
|
return void 0 === e
|
|
};
|
|
de.isString = function (e) {
|
|
return "[object String]" === toString.call(e)
|
|
};
|
|
de.isDate = function (e) {
|
|
return "[object Date]" === toString.call(e)
|
|
};
|
|
de.isNumber = function (e) {
|
|
return "[object Number]" === toString.call(e)
|
|
};
|
|
de.each = function (e, t, n) {
|
|
if (null != e) {
|
|
var i = {}, r = Array.prototype.forEach;
|
|
if (r && e.forEach === r) e.forEach(t, n); else if (e.length === +e.length) {
|
|
for (var o = 0, s = e.length; o < s; o++) if (o in e && t.call(n, e[o], o, e) === i) return
|
|
} else for (var a in e) if (hasOwnProperty.call(e, a) && t.call(n, e[a], a, e) === i) return
|
|
}
|
|
};
|
|
de.buildQuery = function (e, t) {
|
|
var n, i, r = [];
|
|
void 0 === t && (t = "&");
|
|
de.each(e, (function (e, t) {
|
|
n = encodeURIComponent(e.toString());
|
|
i = encodeURIComponent(t);
|
|
r[r.length] = i + "=" + n
|
|
}));
|
|
return r.join(t)
|
|
};
|
|
de.JSONDecode = function (e) {
|
|
if (e) {
|
|
try {
|
|
return JSON.parse(e)
|
|
} catch (e) {
|
|
console.error("JSONDecode error", e)
|
|
}
|
|
return null
|
|
}
|
|
};
|
|
de.JSONEncode = function (e) {
|
|
try {
|
|
return JSON.stringify(e)
|
|
} catch (e) {
|
|
console.error("JSONEncode error", e)
|
|
}
|
|
};
|
|
var ge = Object.create(null);
|
|
|
|
function ve(e) {
|
|
t().v("开始构建 fetch body");
|
|
a.getSystemInfo((function (t) {
|
|
a.getNetworkInfo((function (i) {
|
|
var r = (i = i || {}).networkType;
|
|
r = r === le.MOBILE_NETWORK_NONE ? "unknown" : r.toUpperCase();
|
|
ge.access = r;
|
|
!function (e, t) {
|
|
var i = e.brand || "";
|
|
ge.deviceType = "Phone";
|
|
ge.sdkVersion = le.SDK_VERSION;
|
|
ge.appkey = n().appKey();
|
|
ge.sdkType = a.getSdkType();
|
|
ge.umid = l().getId();
|
|
if (e) {
|
|
ge.language = e.language || "";
|
|
ge.os = e.OS;
|
|
ge.osVersion = e.OSVersion;
|
|
ge.deviceName = e.deviceName;
|
|
ge.platformVersion = e.platformVersion;
|
|
ge.platformSdkVersion = e.platformSDKVersion;
|
|
ge.deviceBrand = i;
|
|
var r = e.resolution.split("*");
|
|
if (de.isArray(r)) {
|
|
ge.resolutionHeight = Number(r[0]);
|
|
ge.resolutionWidth = Number(r[1])
|
|
}
|
|
}
|
|
!function (e) {
|
|
if (e) {
|
|
ge.installTime = e.install_datetime && Date.parse(e.install_datetime);
|
|
ge.scene = e.install_scene;
|
|
ge.channel = e.install_channel;
|
|
ge.campaign = e.install_campaign
|
|
}
|
|
}(Z.getImpObj());
|
|
t && t(ge)
|
|
}(t, e)
|
|
}))
|
|
}))
|
|
}
|
|
|
|
var _e = Object.create(null), ye = null, me = !1, Se = {minFetchIntervalSeconds: 43200};
|
|
|
|
function Ie(e) {
|
|
e && de.each(e, (function (e) {
|
|
_e[e.k] = e
|
|
}))
|
|
}
|
|
|
|
function Ee() {
|
|
var e = this;
|
|
this.STORAGE_NAME = null;
|
|
r.once(r.messageType.CONFIG_LOADED, (function (n) {
|
|
t().v("云配初始化开始...");
|
|
e.init(n)
|
|
}))
|
|
}
|
|
|
|
Ee.prototype = {
|
|
setDefaultValues: function (e) {
|
|
me && de.isObject(e) && de.each(e, (function (e, t) {
|
|
_e[t] && _e[t].v || (_e[t] = {v: e})
|
|
}))
|
|
}, getValue: function (e) {
|
|
t().v("从配置项中读取 value, 当前配置为: ", _e);
|
|
t().v("待读取的 key : ", e);
|
|
try {
|
|
if (!me) return;
|
|
var i = _e[e] || {};
|
|
t().v("读取相应配置ing..., 结果为: ", i);
|
|
if (de.isNumber(i.e) && de.isNumber(i.g)) {
|
|
t().v("读取到相应配置, 开始数据上报...");
|
|
!function (e) {
|
|
var i = {
|
|
appkey: n().appKey(),
|
|
sdkType: a.getSdkType(),
|
|
expId: e && e.e,
|
|
groupId: e && e.g,
|
|
clientTs: Date.now(),
|
|
key: e && e.k,
|
|
value: e && e.v,
|
|
umid: l().getId()
|
|
};
|
|
try {
|
|
a.request({
|
|
url: le.ABLOG_URL, method: "POST", data: [i], success: function (e) {
|
|
e && 200 === e.statusCode ? t().v("上传数据成功", i) : t().w("ablog 请求成功, 返回结果异常 ", e)
|
|
}, fail: function (e) {
|
|
t().w("ablog 请求数据错误 ", i, e)
|
|
}
|
|
})
|
|
} catch (e) {
|
|
t().w("urequest 调用错误", e)
|
|
}
|
|
}(i)
|
|
}
|
|
return i.v
|
|
} catch (n) {
|
|
t().w("getValue error, key: ", e)
|
|
}
|
|
}, active: function (e) {
|
|
try {
|
|
if (!me) return;
|
|
var n, i;
|
|
e && e.params && (n = e.params);
|
|
e && e.callback && (i = e.callback);
|
|
t().v("激活配置项: ", n);
|
|
if (n) {
|
|
t().v("本地已缓存的配置项: ", _e);
|
|
Ie(n);
|
|
t().v("合并后的配置项: ", _e);
|
|
i && i(_e);
|
|
t().v("active 结束")
|
|
} else {
|
|
t().v("配置项为空!! 读取本地配置...");
|
|
a.getStorage(this.STORAGE_NAME, (function (e) {
|
|
if (e) {
|
|
Ie((e = de.JSONDecode(e) || {}).params);
|
|
t().v("当前本地配置项为: ", _e);
|
|
i && i(_e);
|
|
t().v("active 结束")
|
|
} else t().v("当前本地配置项为空, 退出激活")
|
|
}))
|
|
}
|
|
} catch (e) {
|
|
t().w("SDK active 错误", e)
|
|
}
|
|
}, init: function (e) {
|
|
if (e.appKey) {
|
|
ye = e.appKey;
|
|
this.STORAGE_NAME = "um_remote_config_{{" + ye + "}}"
|
|
}
|
|
if (ye) if (me) t().w("SDK 已经初始化, 请避免重复初始化"); else {
|
|
me = !0;
|
|
this.setOptions(e);
|
|
this.active()
|
|
} else t().err("请检查您的小程序 appKey, appKey 不能为空")
|
|
}, setOptions: function (e) {
|
|
if (de.isObject(e)) {
|
|
var t = e.minFetchIntervalSeconds;
|
|
de.isNumber(t) && (Se.minFetchIntervalSeconds = Math.max(t, 5))
|
|
}
|
|
}, fetch: function (e) {
|
|
if (me && this.STORAGE_NAME) {
|
|
var n, i;
|
|
e && e.active && (n = e.active);
|
|
e && e.callback && (i = e.callback);
|
|
var r = this;
|
|
a.getStorage(this.STORAGE_NAME, (function (e) {
|
|
t().v("开始读缓存 data is ", e);
|
|
if ((e = de.JSONDecode(e) || {}).params && e.ts && Date.now() - e.ts < 1e3 * Se.minFetchIntervalSeconds) {
|
|
t().v("缓存数据存在, 并且本次触发时间距离上次fetch触发时间未超过 fetch 时间间隔, 无需 fetch");
|
|
i && i(e.params)
|
|
} else ve((function (e) {
|
|
t().v("缓存数据不存在, 构建 fetch body :", e);
|
|
try {
|
|
a.request({
|
|
url: le.FETCH_URL, method: "POST", data: e, success: function (e) {
|
|
if (e && 200 === e.statusCode && e.data && e.data.cc) {
|
|
t().v("fetch 请求成功, 响应数据: ", e.data);
|
|
var o = Object.create(null);
|
|
de.each(e.data.cc, (function (e) {
|
|
o[e.k] = e
|
|
}));
|
|
var s = {ts: Date.now(), params: o};
|
|
t().v("开始缓存 fetch 请求的云配置结果...");
|
|
a.setStorage(r.STORAGE_NAME, de.JSONEncode(s), (function (e) {
|
|
t().v("缓存云配置成功, 缓存数据为: ", s);
|
|
t().v("缓存云配置成功, 成功消息为: ", e);
|
|
t().v("云配拉取数据是否自动激活: ", n);
|
|
if (e && n) {
|
|
t().v("激活云配置...");
|
|
r.active({params: o, callback: i})
|
|
}
|
|
}))
|
|
} else {
|
|
t().w("fetch 请求成功,返回结果异常 ", e.data);
|
|
i && i()
|
|
}
|
|
}, fail: function (n) {
|
|
t().w("fetch请求数据错误 ", e, n);
|
|
i && i()
|
|
}
|
|
})
|
|
} catch (e) {
|
|
t().w("urequest调用错误", e)
|
|
}
|
|
}))
|
|
}))
|
|
}
|
|
}
|
|
};
|
|
var Oe = {
|
|
install: function (e, t) {
|
|
e.rc || (e.rc = new Ee);
|
|
e.messager.once(e.messager.messageType.CONFIG_LOADED, (function () {
|
|
e._log.v("plugin rc installed")
|
|
}));
|
|
return e.rc
|
|
}
|
|
}, Ae = ".", Ne = "_um", Te = "revenue", we = "stage", ke = "level", be = "running", De = "end", Re = "init",
|
|
Ue = "set", Pe = [Ne, we, "start"].join(Ae);
|
|
|
|
function Le(e) {
|
|
var t = {};
|
|
for (var n in e) {
|
|
var i = e[n];
|
|
if ("object" == typeof i) for (var r in i) t[n + Ae + r] = i[r]; else t[n] = i
|
|
}
|
|
return t
|
|
}
|
|
|
|
var Ce = {
|
|
install: function (e, t) {
|
|
e.revenue = function (t) {
|
|
e.trackEvent([Ne, Te, t.group].join(Ae), Le(t))
|
|
};
|
|
var n = 0;
|
|
e.stage = {
|
|
onStart: function (t) {
|
|
n = Date.now();
|
|
e.trackEvent(Pe, Le(t))
|
|
}, onEnd: function (t) {
|
|
"number" != typeof t._um_sdu && (t._um_sdu = 0 !== n ? Date.now() - n : 0);
|
|
e.trackEvent([Ne, we, De, t.event].join(Ae), Le(t))
|
|
}, onRunning: function (t) {
|
|
e.trackEvent([Ne, we, be, t.event].join(Ae), Le(t))
|
|
}
|
|
};
|
|
e.level = {
|
|
onInitLevel: function (t) {
|
|
e.trackEvent([Ne, ke, Re].join(Ae), Le(t))
|
|
}, onSetLevel: function (t) {
|
|
e.trackEvent([Ne, ke, Ue].join(Ae), Le(t))
|
|
}
|
|
};
|
|
e.messager.once(e.messager.messageType.CONFIG_LOADED, (function () {
|
|
e._log.v("plugin game-ext installed")
|
|
}));
|
|
return e
|
|
}
|
|
};
|
|
var api = window['wx'];
|
|
api && api.onShow((function (e) {
|
|
t().v("game onShow: ", e);
|
|
n = e.query, h = n;
|
|
var n;
|
|
pe.resume(e, !0)
|
|
}));
|
|
api && api.onHide((function () {
|
|
t().v("game onHide");
|
|
pe.pause()
|
|
}));
|
|
var Me = pe.init;
|
|
pe.init = function (e) {
|
|
if (e && e.useOpenid) {
|
|
t().tip_w(t().repeat("!"));
|
|
t().tip_w("您选择了使用openid进行统计,请确保使用setOpenid回传openid或通过设置autoGetOpenid为true,并在友盟后台设置secret由友盟帮您获取");
|
|
t().tip_w(t().repeat("!"))
|
|
}
|
|
Me.call(pe, e)
|
|
};
|
|
pe.use(Oe);
|
|
pe.use(Ce);
|
|
api && (api.uma = pe);
|
|
//module.exports = pe; |