appReport.js
2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import md5 from '../vendors/md5';
import Promise from '../vendors/es6-promise';
import { APP_REPORT_HOST, APP_VERSION, APP_BUILD } from '../libs/config';
let getDeviceInfo = function (app) {
let ak = 'yoholuck_mp'; // 小程序标识
let systemInfo = app.globalData.systemInfo
let device = {}
let union_type = app.getUnion_type();
device.ak = ak
device.udid = app.globalData.udid ? app.globalData.udid : '';
device.ch = union_type ? union_type : app.globalData.ch;
device.os = "weixinapp"
device.osv = systemInfo && systemInfo.version ? systemInfo.version : ''
device.dm = systemInfo && systemInfo.model ? systemInfo.model.replace(' ', '_') : ''
if (systemInfo.platform == 'ios') {
//针对ios设备,特殊处理dm,转为iphone_7这种格式
var start_num = device.dm.indexOf('<')
var end_num = device.dm.indexOf('>')
var deviceModel
if (start_num != 0 && end_num != 0) {
deviceModel = device.dm.substring(start_num + 1, end_num)
if (deviceModel.length > 0) {
deviceModel = deviceModel.replace(',', '_')
device.dm = deviceModel
}
}
}
return device;
}
let appReport = function ({ reportType = 'hb', pt, pn, param = {} } = {}, _this) {
let app = _this || getApp();
let deviceInfo = getDeviceInfo(app)
if (!pt || !pn || !deviceInfo || !deviceInfo.dm) return;
if (!reportType) reportType = 'hb';
let ts = new Date().getTime() + '000000';
let uid = app && app.globalData && app.globalData.userInfo && app.globalData.userInfo.uid ? md5(app.globalData.userInfo.uid) : '';
if (!uid) {
uid = md5(app.getUid());
}
let event = {};
let sid = app && app.globalData && app.globalData.sid ? app.globalData.sid : '';
let networkType = app && app.globalData && app.globalData.networkType ? app.globalData.networkType : '0';
event.ps = '0';
event.av = APP_VERSION;
event.ab = APP_BUILD;
event.ca = '0';
event.net = networkType;
event.sid = sid;
event.uid = uid;
event.ts = ts;
event.pt = pt;
event.pn = pn;
event.param = param;
let events = [];
events.push(event)
//组装最终要上报的数据
let parameters = {};
parameters.type = reportType;
parameters.device = deviceInfo;
parameters.events = events;
let _appReport = function (url, params = {}) {
return new Promise(function (resolve, reject) {
let app = getApp();
let data = JSON.stringify(params)
let sid = app && app.globalData && app.globalData.sid ? app.globalData.sid : '';
let header = {
'content-type': "application/json",
'x-yoho-sid': md5(sid),
}
wx.request({
url,
data,
header,
method: 'POST'
});
})
};
_appReport(APP_REPORT_HOST, parameters);
}
export default appReport;