uniapp 单例的写法
import storage from "@/utils/storage";
import { APP_USER_ID, APP_USER_KIND, APP_TOKEN_KEY } from "@/config/constants";
import { createUserPageUseTimeApi, createUserOnlineUseTimeApi } from "@/service/api/analytics.ts";
type PageTimeRecord = {
pagePath ?: string
pageName ?: string
enterTime : number
leaveTime ?: number
duration ?: number
userId : string
userKind : string
userRecordId : string
platform : string
deviceInfo ?: UniApp.GetSystemInfoResult //预留
}
class Analytics {
private static instance : Analytics
private currentPage : PageTimeRecord | null = null
private currentPageApp : PageTimeRecord | null = null
// private pageRecords: PageTimeRecord[] = []
private deviceInfo : UniApp.GetSystemInfoResult | null = null
private analyticsSwith = import.meta.env.VITE_ANALYTICS_SWITCH
private constructor() {
// 获取设备信息
uni.getSystemInfo({
success: (res) => {
this.deviceInfo = res
}
})
}
//生成UUID
public generateUUID() : string {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
const r = Math.random() * 16 | 0
const v = c === 'x' ? r : (r & 0x3 | 0x8)
return v.toString(16)
})
}
public static getInstance() : Analytics {
if (!Analytics.instance) {
Analytics.instance = new Analytics()
}
return Analytics.instance
}
}
//使用方式:
import Analytics from '@/utils/analytics'
const analytics = Analytics.getInstance()
analytics.generateUUID()