123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <script lang="uts">
- import { state, setLifeCycleNum, checkSystemTheme, setNetless } from '@/store/index.uts'
- // #ifdef APP-ANDROID || APP-HARMONY
- let firstBackTime = 0
- // #endif
- export default {
- globalData: {
- str: 'default globalData str',
- num: 0,
- bool: false,
- obj: {
- str: 'default globalData obj str',
- num: 0,
- bool: false,
- } as UTSJSONObject,
- null: null as string | null,
- arr: [] as number[],
- mySet: new Set<string>(),
- myMap: new Map<string, any>(),
- func: () : string => {
- return 'globalData func'
- },
- launchOptions: {
- path: '',
- } as OnLaunchOptions,
- onShowOption: {
- path: ''
- } as OnShowOptions
- },
- onLaunch: function (res : OnLaunchOptions) {
- this.globalData.launchOptions = res
- // 自动化测试
- setLifeCycleNum(state.lifeCycleNum + 1000)
- console.log('App Launch')
- // 页面性能分析
- // const performance = uni.getPerformance()
- // const observer1: PerformanceObserver = performance.createObserver(
- // (entryList: PerformanceObserverEntryList) => {
- // console.log('observer1:entryList.getEntries()' +JSON.stringify(entryList.getEntries()))
- // }
- // )
- // observer1.observe({
- // entryTypes: ['render', 'navigation'],
- // } as PerformanceObserverOptions)
- // 统计上报 - 应用启动
- // #ifdef APP-ANDROID || APP-IOS || WEB || MP-WEIXIN
- uni.report({
- name: 'uni-app-launch',
- options: res,
- success(res_data) {
- console.log(res_data);
- }, fail(err) {
- console.log(err);
- }
- })
- // #endif
- // #ifdef APP
- if (process.env.NODE_ENV !== 'development') { //真机运行可以注释此条件
- uni.getPrivacySetting({
- success(res1){
- if(res1.needAuthorization){
- uni.openDialogPage({
- url: '/pages/component/button/privacy',
- })
- }
- }
- })
- // #ifdef APP-HARMONY
- uni.getNetworkType({
- success(res) {
- setNetless(res.networkType === 'none')
- }
- })
- uni.onNetworkStatusChange((res) => {
- setNetless(res.isConnected === false)
- })
- // #endif
- }
- // #endif
- // 获取系统主题
- checkSystemTheme();
- },
- onShow: function (res : OnShowOptions) {
- this.globalData.onShowOption = res
- // 处理scheme或通用链接直达
- let url = this.getRedirectUrl(res.appScheme, res.appLink);
- if (null != url) {
- uni.navigateTo({
- url: url
- })
- }
- // 自动化测试
- setLifeCycleNum(state.lifeCycleNum + 100)
- console.log('App Show')
- // #ifdef APP-ANDROID || APP-IOS || WEB || MP-WEIXIN
- // 统计上报 - 应用显示
- uni.report({
- name: 'uni-app-show',
- success(res_data) {
- console.log(res_data);
- }, fail(err) {
- console.log(err);
- }
- })
- // #endif
- },
- onHide: function () {
- // 自动化测试
- setLifeCycleNum(state.lifeCycleNum - 100)
- console.log('App Hide')
- // #ifdef APP-ANDROID || APP-IOS || WEB || MP-WEIXIN
- // 统计上报 - 应用进入后台
- uni.report({
- name: 'uni-app-hide',
- success(res) {
- console.log(res);
- }, fail(err) {
- console.log(err);
- }
- })
- // #endif
- },
- // #ifdef APP-ANDROID || APP-HARMONY
- onLastPageBackPress: function () {
- // 自动化测试
- setLifeCycleNum(state.lifeCycleNum - 1000)
- console.log('App LastPageBackPress')
- if (firstBackTime == 0) {
- uni.showToast({
- title: '再按一次退出应用',
- position: 'bottom',
- })
- firstBackTime = Date.now()
- setTimeout(() => {
- firstBackTime = 0
- }, 2000)
- } else if (Date.now() - firstBackTime < 2000) {
- firstBackTime = Date.now()
- uni.exit()
- }
- },
- onExit() {
- console.log('App Exit')
- },
- // #endif
- onError(err : any) {
- // console.log('App onError', err)
- // #ifdef APP-ANDROID || APP-IOS || WEB || MP-WEIXIN
- // 统计上报 - 应用发生错误
- uni.report({
- name: 'uni-app-error',
- options: err,
- success(res) {
- console.log(res);
- }, fail(err) {
- console.log(err);
- }
- })
- // #endif
- },
- methods: {
- increasetLifeCycleNum() {
- setLifeCycleNum(state.lifeCycleNum + 100)
- console.log('App increasetLifeCycleNum')
- },
- getRedirectUrl(scheme : string | null, ulink : string | null) : string | null {
- //解析scheme或universal link启动直达页面:
- //scheme格式:uniappx://redirect/pages/component/view/view?key=value //其中redirect后为页面路径
- //universal link格式:https://uniappx.dcloud.net.cn/ulink/redirect.html?url=%2Fpages%2Fcomponent%2Fview%2Fview%3Fkey%3Dvalue //通用链接路径需固定,?后面的url参数为直达页面路径,注意url字段值需做url编码(可使用encodeURIComponent方法)
- let url : string | null = null;
- if (null != scheme && scheme.length > 0) {
- const PATHPRE = 'redirect';
- let parts : string | null = null;
- let pos = scheme.search('//');
- if (pos > 0) {
- parts = scheme.substring(pos + 2);
- }
- if (null != parts && parts.startsWith(PATHPRE)) {
- url = parts.substring(PATHPRE.length);
- }
- } else if (null != ulink && ulink.length > 0) {
- const PATH = 'ulink/redirect.html';
- let parts = ulink.split('?');
- if (parts.length > 1 && parts[0].endsWith(PATH) && parts[1].length > 0) {
- parts[1].split('&').forEach((e) => {
- let params = e.split('=');
- if (params.length > 1 && params[0].length > 0 && params[1].length > 0) {
- if ('url' == params[0]) {
- if (null == url) {
- url = decodeURIComponent(params[1]);
- }
- }
- }
- });
- }
- }
- return url;
- }
- }
- }
- </script>
- <style>
- /*每个页面公共css */
- @import "./common/uni.css";
- /* #ifdef WEB */
- .uni-top-window uni-tabbar .uni-tabbar {
- background-color: #fff !important;
- }
- /* #endif */
- /* #ifdef MP-WEIXIN */
- page {
- background-color: #efeff4;
- }
- /* #endif */
- </style>
|