alipay-emulator/App.vue

188 lines
4.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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`)
},
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 == 'pages/index/index' || data == 'pages/contacts/index' || data ==
// 'pages/discover/index' || data == 'pages/me/index') {
// uni.switchTab({
// url: '/' + data
// });
// } else {
// 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', "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>