提交 313f85a4 编写于 作者: M mehaotian

fix(stat): 统计兼容vue3

上级 f4733de0
......@@ -3,12 +3,15 @@ const stat = Stat.getInstance()
let isHide = false
const lifecycle = {
onLaunch(options) {
console.log('report onLaunch init')
stat.report(options, this)
},
onReady() {
console.log('report onReady init')
stat.ready(this)
},
onLoad(options) {
console.log('report onLoad init')
stat.load(options, this)
// 重写分享,获取分享上报事件
if (this.$scope && this.$scope.onShareAppMessage) {
......@@ -20,14 +23,17 @@ const lifecycle = {
}
},
onShow() {
console.log('report onShow init')
isHide = false
stat.show(this)
},
onHide() {
console.log('report onHide init')
isHide = true
stat.hide(this)
},
onUnload() {
console.log('report onUnload init')
if (isHide) {
isHide = false
return
......@@ -35,20 +41,28 @@ const lifecycle = {
stat.hide(this)
},
onError(e) {
console.log('report onError init')
stat.error(e)
},
}
function main() {
if (process.env.NODE_ENV === 'development') {
uni.report = function (type, options) {}
} else {
const Vue = require('vue')
;(Vue.default || Vue).mixin(lifecycle)
console.log('stat onload ----')
setTimeout(() => {
getApp().$.appContext.app.mixin(lifecycle)
uni.report = function (type, options) {
stat.sendEvent(type, options)
}
}
}, 1)
// if (process.env.NODE_ENV === 'development') {
// uni.report = function (type, options) {}
// } else {
// const Vue = require('vue')
// ;(Vue.default || Vue).mixin(lifecycle)
// uni.report = function (type, options) {
// stat.sendEvent(type, options)
// }
// }
}
main()
......@@ -238,41 +238,29 @@ export const getRoute = () => {
var pages = getCurrentPages()
var page = pages[pages.length - 1]
if (!page) return ''
// TODO 需要确认如果不用 $vm ,其他平台会不会出错
let _self = page.$vm
if (getPlatformName() === 'bd') {
return _self.$mp && _self.$mp.page.is
} else {
return (
(_self.$scope && _self.$scope.route) ||
(_self.$mp && _self.$mp.page.route)
)
return _self.route || (_self.$mp && _self.$mp.page.route)
}
}
export const getPageRoute = (self) => {
var pages = getCurrentPages()
var page = pages[pages.length - 1]
if (!page) return ''
let _self = page.$vm
let route = getRoute()
let query = self._query
let str =
query && JSON.stringify(query) !== '{}' ? '?' + JSON.stringify(query) : ''
// clear
self._query = ''
if (getPlatformName() === 'bd') {
return _self.$mp && _self.$mp.page.is + str
} else {
return (
(_self.$scope && _self.$scope.route + str) ||
(_self.$mp && _self.$mp.page.route + str)
)
}
return route + str
}
export const getPageTypes = (self) => {
if (
self.mpType === 'page' ||
self.$mpType === 'page' ||
(self.$mp && self.$mp.mpType === 'page') ||
self.$options.mpType === 'page'
) {
......
......@@ -26,7 +26,7 @@ import {
import { STAT_URL, STAT_VERSION, STAT_H5_URL, OPERATING_TIME } from './config'
const titleJsons = process.env.UNI_STAT_PAGES_TITLE
const titleJsons = process.env.UNI_STAT_TITLE_JSON
const statConfig = {
appid: process.env.UNI_APP_ID,
}
......@@ -130,11 +130,11 @@ class Util {
}
getLastTime()
this._lastPageRoute = route
const time = getResidenceTime('page')
// 停留时间
if (time.overtime) {
let options = {
path: this._lastPageRoute,
path: route,
scene: this.statData.sc,
}
this._sendReportRequest(options)
......@@ -146,11 +146,13 @@ class Util {
if (!this.__licationHide) {
getLastTime()
const time = getResidenceTime('page')
const route = getPageRoute(this)
this._sendPageRequest({
url: this._lastPageRoute,
url: route,
urlref: this._lastPageRoute,
urlref_ts: time.residenceTime,
})
this._lastPageRoute = route
this._navigationBarTitle = {
config: '',
page: '',
......@@ -306,7 +308,6 @@ class Util {
data.ttn = title.page
data.ttpj = title.config
data.ttc = title.report
let requestData = this._reportingRequestData
if (getPlatformName() === 'n') {
requestData = uni.getStorageSync('__UNI__STAT__DATA') || {}
......@@ -376,9 +377,6 @@ class Util {
uni.request({
url: STAT_URL,
method: 'POST',
// header: {
// 'content-type': 'application/json' // 默认值
// },
data: optionsData,
success: () => {
// if (process.env.NODE_ENV === 'development') {
......@@ -494,19 +492,17 @@ class Stat extends Util {
report(options, self) {
this.self = self
// if (process.env.NODE_ENV === 'development') {
// console.log('report init');
// }
setPageResidenceTime()
this.__licationShow = true
this._sendReportRequest(options, true)
}
load(options, self) {
if (!self.$scope && !self.$mp) {
const page = getCurrentPages()
self.$scope = page[page.length - 1]
}
// if (!self.$scope && !self.$mp) {
// const page = getCurrentPages()
// console.log();
// self.$scope = page[page.length - 1]
// }
this.self = self
this._query = options
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册