195 lines
4.8 KiB
Vue
195 lines
4.8 KiB
Vue
<script>
|
||
export default {
|
||
globalData: {
|
||
NativeEvent: true,
|
||
recentNativeEvent: "", // 初始化一个全局变量
|
||
recentNativeData: 0 // 初始化一个全局变量
|
||
},
|
||
onLaunch: function (options) {
|
||
const startTime = Date.now()
|
||
console.log('App Launch', options)
|
||
|
||
// 1. 获取并存储系统信息(只获取一次)
|
||
const systemInfo = uni.getSystemInfoSync()
|
||
uni.setStorageSync('systemInfo', {
|
||
platform: systemInfo.platform,
|
||
system: systemInfo.system,
|
||
osName: systemInfo.osName,
|
||
osVersion: systemInfo.osVersion,
|
||
statusBarHeight: systemInfo.statusBarHeight,
|
||
windowWidth: systemInfo.windowWidth,
|
||
windowHeight: systemInfo.windowHeight,
|
||
isIOS: systemInfo.platform === 'ios',
|
||
isAndroid: systemInfo.platform === 'android'
|
||
})
|
||
|
||
// 2. 同步初始化配置(必须完成)
|
||
this.initConfig(options)
|
||
|
||
// 启动完成
|
||
console.log(`App 启动耗时: ${Date.now() - startTime}ms`)
|
||
|
||
// 初始化埋点,进入支付宝模拟器首页
|
||
this.$apiUserEvent('all', {
|
||
type: 'event',
|
||
key: 'index',
|
||
value: "进入支付宝模拟器首页",
|
||
})
|
||
},
|
||
|
||
onShow: function () {
|
||
console.log('App Show')
|
||
if (this.globalData.NativeEvent) {
|
||
this.globalData.NativeEvent = false
|
||
//监听宿主传递消息
|
||
uni.onNativeEventReceive((event, data) => {
|
||
if (event) {
|
||
if (event == "token") {
|
||
let header = uni.getStorageSync('header')
|
||
header["x-token"] = data
|
||
uni.setStorageSync('header', header)
|
||
//获取宿主用户信息
|
||
try {
|
||
//获取宿主用户信息
|
||
this.$getUserInfo()
|
||
} catch (error) {
|
||
//TODO handle the exception
|
||
}
|
||
} else if (event == "jump") {
|
||
if (data) {
|
||
let pages = getCurrentPages();
|
||
let currentPage = pages[pages.length - 1];
|
||
let currentUrl = currentPage.route;
|
||
if (currentUrl != data) {
|
||
uni.navigateTo({
|
||
url: '/' + data
|
||
});
|
||
}
|
||
}
|
||
|
||
} else if (event == 'wx_pay_result' || event == 'ios_pay_result') {
|
||
this.globalData.recentNativeEvent = event
|
||
this.globalData.recentNativeData = data
|
||
}
|
||
console.log('全局监听:接收到宿主App消息-' + event + ':' + data);
|
||
}
|
||
})
|
||
}
|
||
},
|
||
|
||
onHide: function () {
|
||
console.log('App Hide')
|
||
},
|
||
onExit: function () {
|
||
// 关闭数据库
|
||
// #ifdef APP
|
||
// plus.sqlite.closeDatabase({ name: 'zyds' })
|
||
uni.sendNativeEvent('unimp_stop_alipay', "stop", ret => {
|
||
// console.log('宿主App回传的数据:' + ret);
|
||
});
|
||
// #endif
|
||
console.log('App onExit')
|
||
},
|
||
|
||
methods: {
|
||
/**
|
||
* 初始化应用配置
|
||
*/
|
||
initConfig(options) {
|
||
// 检查是否有外部传入的配置数据
|
||
const hasExtraData = options?.referrerInfo?.extraData &&
|
||
JSON.stringify(options.referrerInfo.extraData) !== '{}'
|
||
|
||
if (hasExtraData) {
|
||
this.initFromExtraData(options.referrerInfo.extraData)
|
||
} else {
|
||
this.initFromEnvironment()
|
||
}
|
||
},
|
||
|
||
/**
|
||
* 从外部数据初始化配置
|
||
*/
|
||
initFromExtraData(extraData) {
|
||
// 批量设置 Storage,减少 I/O 次数
|
||
const storageData = {
|
||
host: extraData.host,
|
||
header: {
|
||
"x-token": extraData['x-token'],
|
||
"x-version": extraData['x-version'],
|
||
"x-platform": extraData['x-platform'],
|
||
"x-device-id": extraData['x-device-id'],
|
||
"x-mobile-brand": extraData['x-mobile-brand'],
|
||
"x-mobile-model": extraData['x-mobile-model'],
|
||
"x-channel": extraData['x-channel'],
|
||
"x-package": extraData['x-package'],
|
||
"x-click-id": extraData['x-click-id'],
|
||
// #ifdef APP-PLUS
|
||
"header": {
|
||
"version": this.$version,
|
||
}
|
||
// #endif
|
||
},
|
||
encrypt: extraData['encrypt'],
|
||
decrypt: extraData['decrypt']
|
||
}
|
||
|
||
// 批量写入
|
||
Object.keys(storageData).forEach(key => {
|
||
uni.setStorageSync(key, storageData[key])
|
||
})
|
||
},
|
||
|
||
/**
|
||
* 从环境配置初始化
|
||
*/
|
||
initFromEnvironment() {
|
||
if (process.env.NODE_ENV === 'development') {
|
||
this.initDevelopmentConfig()
|
||
} else {
|
||
// 生产环境警告延迟显示,避免阻塞启动
|
||
setTimeout(() => {
|
||
this.showProductionWarning()
|
||
}, 100)
|
||
}
|
||
},
|
||
|
||
/**
|
||
* 初始化开发环境配置
|
||
*/
|
||
initDevelopmentConfig() {
|
||
// 批量设置开发环境配置
|
||
const devConfig = {
|
||
host: "https://flaunt.batiao8.com/",
|
||
header: { "x-token": "ebe14dab-1879-4c5d-9148-727b96b30aad" },
|
||
decrypt: "e4rOtnF8tJjtHO7ecZeJHN1rapED5ImB",
|
||
encrypt: "xn08hYoizXhZ1zHP8DVqfCm2yHxPmhil"
|
||
}
|
||
|
||
Object.keys(devConfig).forEach(key => {
|
||
uni.setStorageSync(key, devConfig[key])
|
||
})
|
||
},
|
||
|
||
/**
|
||
* 显示生产环境警告
|
||
*/
|
||
showProductionWarning() {
|
||
uni.showModal({
|
||
title: '提示',
|
||
showCancel: false,
|
||
content: "将退出,请重新进入",
|
||
success: function (res) {
|
||
// #ifdef APP-PLUS
|
||
plus.runtime.quit()
|
||
// #endif
|
||
}
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
@import "./common/color.css";
|
||
</style> |