mta_analysis.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. var MTA_CONFIG = {
  2. app_id: "",
  3. event_id: "",
  4. api_base: "https://pingtas.qq.com/pingd",
  5. prefix: "_mta_",
  6. version: "1.3.10",
  7. stat_share_app: !1,
  8. stat_pull_down_fresh: !1,
  9. stat_reach_bottom: !1,
  10. stat_param: !0
  11. };
  12. function getNetworkType(a) {
  13. wx.getNetworkType({
  14. success: function (b) {
  15. a(b.networkType)
  16. }
  17. })
  18. }
  19. function getSystemInfo() {
  20. var a = wx.getSystemInfoSync();
  21. return {
  22. adt: encodeURIComponent(a.model),
  23. scl: a.pixelRatio,
  24. scr: a.windowWidth + "x" + a.windowHeight,
  25. lg: a.language,
  26. fl: a.version,
  27. jv: encodeURIComponent(a.system),
  28. tz: encodeURIComponent(a.platform)
  29. }
  30. }
  31. function getUID() {
  32. try {
  33. return wx.getStorageSync(MTA_CONFIG.prefix + "auid")
  34. } catch (a) {}
  35. }
  36. function setUID() {
  37. try {
  38. var a = getRandom();
  39. wx.setStorageSync(MTA_CONFIG.prefix + "auid", a);
  40. return a
  41. } catch (b) {}
  42. }
  43. function getSID() {
  44. try {
  45. return wx.getStorageSync(MTA_CONFIG.prefix + "ssid")
  46. } catch (a) {}
  47. }
  48. function setSID() {
  49. try {
  50. var a = "s" + getRandom();
  51. wx.setStorageSync(MTA_CONFIG.prefix + "ssid", a);
  52. return a
  53. } catch (b) {}
  54. }
  55. function getRandom(a) {
  56. for (var b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], c = 10; 1 < c; c--) {
  57. var d = Math.floor(10 * Math.random()),
  58. f = b[d];
  59. b[d] = b[c - 1];
  60. b[c - 1] = f
  61. }
  62. for (c = d = 0; 5 > c; c++) d = 10 * d + b[c];
  63. return (a || "") + (d + "" + +new Date)
  64. }
  65. function getPagePath() {
  66. try {
  67. var a = getCurrentPages(),
  68. b = "/";
  69. 0 < a.length && (b = a.pop().__route__);
  70. return b
  71. } catch (c) {
  72. console.log("get current page path error:" + c)
  73. }
  74. }
  75. function getMainInfo() {
  76. var a = {
  77. dm: "wechat.apps.xx",
  78. url: encodeURIComponent(getPagePath() + getQuery(MTA.Data.pageQuery)),
  79. pvi: "",
  80. si: "",
  81. ty: 0
  82. };
  83. a.pvi = function () {
  84. var b = getUID();
  85. b || (b = setUID(), a.ty = 1);
  86. return b
  87. }();
  88. a.si = function () {
  89. var a = getSID();
  90. a || (a = setSID());
  91. return a
  92. }();
  93. return a
  94. }
  95. function getBasicInfo() {
  96. var a = getSystemInfo();
  97. getNetworkType(function (a) {
  98. try {
  99. wx.setStorageSync(MTA_CONFIG.prefix + "ntdata", a)
  100. } catch (c) {}
  101. });
  102. a.ct = wx.getStorageSync(MTA_CONFIG.prefix + "ntdata") || "4g";
  103. return a
  104. }
  105. function getExtentInfo() {
  106. var a = MTA.Data.userInfo;
  107. var b = [],
  108. c;
  109. for (c in a) a.hasOwnProperty(c) && b.push(c + "=" + a[c]);
  110. a = b.join(";");
  111. return {
  112. r2: MTA_CONFIG.app_id,
  113. r4: "wx",
  114. ext: "v=" + MTA_CONFIG.version + (null !== a && "" !== a ? ";ui=" + encodeURIComponent(a) : "")
  115. }
  116. }
  117. function getQuery(a) {
  118. if (!MTA_CONFIG.stat_param || !a) return "";
  119. a = ignoreParams(a);
  120. var b = [],
  121. c;
  122. for (c in a) b.push(c + "=" + a[c]);
  123. return 0 < b.length ? "?" + b.join("&") : ""
  124. }
  125. function ignoreParams(a) {
  126. if (1 > MTA_CONFIG.ignore_params.length) return a;
  127. var b = {},
  128. c;
  129. for (c in a) 0 <= MTA_CONFIG.ignore_params.indexOf(c) || (b[c] = a[c]);
  130. return b
  131. }
  132. function initOnload() {
  133. var a = Page;
  134. Page = function (b) {
  135. var c = b.onLoad;
  136. b.onLoad = function (a) {
  137. c && c.call(this, a);
  138. MTA.Data.lastPageQuery = MTA.Data.pageQuery;
  139. MTA.Data.pageQuery = a;
  140. MTA.Data.lastPageUrl = MTA.Data.pageUrl;
  141. MTA.Data.pageUrl = getPagePath();
  142. MTA.Data.show = !1;
  143. MTA.Page.init()
  144. };
  145. a(b)
  146. }
  147. }
  148. var MTA = {
  149. App: {
  150. init: function (a) {
  151. "appID" in a && (MTA_CONFIG.app_id = a.appID);
  152. "eventID" in a && (MTA_CONFIG.event_id = a.eventID);
  153. "statShareApp" in a && (MTA_CONFIG.stat_share_app = a.statShareApp);
  154. "statPullDownFresh" in a && (MTA_CONFIG.stat_pull_down_fresh = a.statPullDownFresh);
  155. "statReachBottom" in a && (MTA_CONFIG.stat_reach_bottom = a.statReachBottom);
  156. "ignoreParams" in a && (MTA_CONFIG.ignore_params = a.ignoreParams);
  157. "statParam" in a && (MTA_CONFIG.stat_param = a.statParam);
  158. setSID();
  159. try {
  160. "lauchOpts" in a && (MTA.Data.lanchInfo = a.lauchOpts,
  161. MTA.Data.lanchInfo.landing = 1)
  162. } catch (b) {}
  163. "autoReport" in a && a.autoReport && initOnload()
  164. }
  165. },
  166. Page: {
  167. init: function () {
  168. var a = getCurrentPages()[getCurrentPages().length - 1];
  169. a.onShow && ! function () {
  170. var b = a.onShow;
  171. a.onShow = function () {
  172. if (!0 === MTA.Data.show) {
  173. var a = MTA.Data.lastPageQuery;
  174. MTA.Data.lastPageQuery = MTA.Data.pageQuery;
  175. MTA.Data.pageQuery = a;
  176. MTA.Data.lastPageUrl = MTA.Data.pageUrl;
  177. MTA.Data.pageUrl = getPagePath()
  178. }
  179. MTA.Data.show = !0;
  180. MTA.Page.stat();
  181. b.apply(this, arguments)
  182. }
  183. }();
  184. MTA_CONFIG.stat_pull_down_fresh && a.onPullDownRefresh &&
  185. ! function () {
  186. var b = a.onPullDownRefresh;
  187. a.onPullDownRefresh = function () {
  188. MTA.Event.stat(MTA_CONFIG.prefix + "pulldownfresh", {
  189. url: a.__route__
  190. });
  191. b.apply(this, arguments)
  192. }
  193. }();
  194. MTA_CONFIG.stat_reach_bottom && a.onReachBottom && ! function () {
  195. var b = a.onReachBottom;
  196. a.onReachBottom = function () {
  197. MTA.Event.stat(MTA_CONFIG.prefix + "reachbottom", {
  198. url: a.__route__
  199. });
  200. b.apply(this, arguments)
  201. }
  202. }();
  203. MTA_CONFIG.stat_share_app && a.onShareAppMessage && ! function () {
  204. var b = a.onShareAppMessage;
  205. a.onShareAppMessage = function () {
  206. MTA.Event.stat(MTA_CONFIG.prefix +
  207. "shareapp", {
  208. url: a.__route__
  209. });
  210. return b.apply(this, arguments)
  211. }
  212. }()
  213. },
  214. multiStat: function (a, b) {
  215. if (1 == b) MTA.Page.stat(a), !0;
  216. else {
  217. var c = getCurrentPages()[getCurrentPages().length - 1];
  218. c.onShow && ! function () {
  219. var b = c.onShow;
  220. c.onShow = function () {
  221. MTA.Page.stat(a);
  222. b.call(this, arguments)
  223. }
  224. }()
  225. }
  226. },
  227. stat: function (a) {
  228. if ("" != MTA_CONFIG.app_id) {
  229. var b = [],
  230. c = getExtentInfo();
  231. a && (c.r2 = a);
  232. a = [getMainInfo(), c, getBasicInfo()];
  233. if (MTA.Data.lanchInfo) {
  234. a.push({
  235. ht: MTA.Data.lanchInfo.scene
  236. });
  237. MTA.Data.pageQuery && MTA.Data.pageQuery._mta_ref_id &&
  238. a.push({
  239. rarg: MTA.Data.pageQuery._mta_ref_id
  240. });
  241. try {
  242. 1 == MTA.Data.lanchInfo.landing && (c.ext += ";lp=1", MTA.Data.lanchInfo.landing = 0)
  243. } catch (e) {}
  244. }
  245. a.push({
  246. rdm: "/",
  247. rurl: 0 >= MTA.Data.lastPageUrl.length ? MTA.Data.pageUrl + getQuery(MTA.Data.lastPageQuery) : encodeURIComponent(MTA.Data.lastPageUrl + getQuery(MTA.Data.lastPageQuery))
  248. });
  249. a.push({
  250. rand: +new Date
  251. });
  252. c = 0;
  253. for (var d = a.length; c < d; c++)
  254. for (var f in a[c]) a[c].hasOwnProperty(f) && b.push(f + "=" + ("undefined" == typeof a[c][f] ? "" : a[c][f]));
  255. wx.request({
  256. url: MTA_CONFIG.api_base +
  257. "?" + b.join("&").toLowerCase()
  258. })
  259. }
  260. }
  261. },
  262. Event: {
  263. stat: function (a, b) {
  264. if ("" != MTA_CONFIG.event_id) {
  265. var c = [],
  266. d = getMainInfo(),
  267. f = getExtentInfo();
  268. d.dm = "wxapps.click";
  269. d.url = a;
  270. f.r2 = MTA_CONFIG.event_id;
  271. var e = "undefined" === typeof b ? {} : b;
  272. var k = [],
  273. g;
  274. for (g in e) e.hasOwnProperty(g) && k.push(encodeURIComponent(g) + "=" + encodeURIComponent(e[g]));
  275. e = k.join(";");
  276. f.r5 = e;
  277. e = 0;
  278. d = [d, f, getBasicInfo(), {
  279. rand: +new Date
  280. }];
  281. for (f = d.length; e < f; e++)
  282. for (var h in d[e]) d[e].hasOwnProperty(h) && c.push(h + "=" + ("undefined" == typeof d[e][h] ? "" : d[e][h]));
  283. wx.request({
  284. url: MTA_CONFIG.api_base + "?" + c.join("&").toLowerCase()
  285. })
  286. }
  287. }
  288. },
  289. Data: {
  290. userInfo: null,
  291. lanchInfo: null,
  292. pageQuery: null,
  293. lastPageQuery: null,
  294. pageUrl: "",
  295. lastPageUrl: "",
  296. show: !1
  297. }
  298. };
  299. module.exports = MTA;