2025/2/8第一次更新

This commit is contained in:
爱吃咸鱼小猫咪
2025-02-08 18:50:38 +08:00
commit d7af560866
26519 changed files with 5046029 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
<script>
let firstBackTime = 0
export default {
onLaunch: function () {
console.log('App Launch')
},
onShow: function () {
console.log('App Show')
},
onHide: function () {
console.log('App Hide')
},
// #ifdef APP-ANDROID
onLastPageBackPress: function () {
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()
}
},
// #endif
onExit: function () {
console.log('App Exit')
},
}
</script>
@@ -0,0 +1,9 @@
import App from './App.uvue'
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
@@ -0,0 +1,11 @@
{
"name" : "NAME",
"appid" : "APPID",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"uni-app-x" : {},
"app" : {
"defaultAppTheme": "auto"
}
}
@@ -0,0 +1,14 @@
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "uni-app x"
}
}
],
"globalStyle": {
"navigationStyle": "custom",
"pageOrientation": "auto"
}
}
@@ -0,0 +1,118 @@
<template>
<view style="flex: 1;">
<!-- #ifdef APP-ANDROID -->
<view :style="{ height: `${statusBarHeight}px` }"></view>
<!-- #endif -->
<web-view
ref="webview"
id="webview"
style="flex: 1;"
:webview-styles="webviewStyles"
<!-- #ifdef APP-ANDROID -->
android-layer-type="software"
<!-- #endif -->
:src="src"
@message="message"
@error="error"
/>
</view>
</template>
<script lang='uts'>
export default {
data() {
return {
src: process.env.UNI_AUTOMATOR_APP_WEBVIEW_SRC,
webviewElement: null as UniWebViewElement | null,
webviewContext: null as WebviewContext | null,
webviewStyles: {
progress: false
},
statusBarHeight: 0,
safeAreaTop: 0
}
},
onReady() {
const windowInfo = uni.getWindowInfo()
this.statusBarHeight = windowInfo.statusBarHeight
this.safeAreaTop = windowInfo.safeAreaInsets.top
this.webviewElement = this.$refs['webview'] as UniWebViewElement
this.webviewContext = uni.createWebviewContext('webview', this)
},
methods: {
initAutomator() {
const options = {
wsEndpoint: process.env.UNI_AUTOMATOR_WS_ENDPOINT
}
this.webviewContext!.evalJS(`initRuntimeAutomator(${JSON.stringify(options)})`)
console.log('initRuntimeAutomator...')
},
message(msg: UniWebViewMessageEvent) {
// #ifdef APP-ANDROID
// data 由 对象变更成数组
const data = msg.detail.data[0];
const id = data.get("id") as number
const type = data.get("type") as string
const dataObj = data.get("data") as UTSJSONObject
const action = dataObj.getString("action")!
const args = dataObj.get("args")
// #endif
// #ifndef APP-ANDROID
const data = msg.detail.data.length ? msg.detail.data[0].data : msg.detail.data
const id = data["id"] as number
const type = data["type"] as string
const dataObj = data["data"]
const action = dataObj["action"]!
const args = dataObj["args"]
// #endif
if (type != 'automator') {
return;
}
if (action == 'ready') {
this.initAutomator()
} else {
console.log(id, action, args)
if (action == 'captureScreenshot') {
// 调用截图
this.$viewToTempFilePath({
id: 'webview',
// #ifdef APP-ANDROID
offsetY: `44`,
// #endif
// #ifndef APP-ANDROID
offsetY: `${this.safeAreaTop + 44}`,
// #endif
overwrite: true,
wholeContent: true,
success: (res) => {
const fileManager = uni.getFileSystemManager()
fileManager.readFile({
encoding: 'base64',
filePath: res.tempFilePath,
success: (readFileRes) => {
this.callback(id, { data: readFileRes.data }, '')
},
fail: (error) => {
this.callback(id, '', error.errMsg)
},
} as ReadFileOptions)
},
fail: (res) => {
this.callback(id, '', res.errMsg)
}
})
}
}
},
error(event : WebViewErrorEvent) {
console.log('webview load error', JSON.stringify(event.detail));
},
callback(id : number, res : any | null, error : string) {
this.webviewContext!.evalJS(`onPostMessageFromUniXWebView(${id},${JSON.stringify(res)},${JSON.stringify(error)})`)
}
}
}
</script>
+63
View File
@@ -0,0 +1,63 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
exports.default = [
(0, uni_cli_shared_1.defineUniMainJsPlugin)((opts) => {
return {
name: 'uni:automator',
enforce: 'pre',
configResolved() {
if (!process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
return;
}
const pkg = JSON.parse(fs_extra_1.default.readFileSync(path_1.default.resolve(__dirname, '../package.json'), 'utf8'));
const automatorJson = JSON.stringify({
version: pkg.version,
wsEndpoint: process.env.UNI_AUTOMATOR_WS_ENDPOINT,
});
fs_extra_1.default.outputFileSync(path_1.default.resolve(process.env.UNI_OUTPUT_DIR, '../.automator/' + (0, uni_cli_shared_1.getPlatformDir)() + '/.automator.json'), automatorJson);
},
transform(code, id) {
if (!process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
return null;
}
if (opts.filter(id)) {
const platform = process.env.UNI_PLATFORM;
// 仅 app-android
if (platform === 'app' && process.env.UNI_APP_X === 'true') {
// app-webview,不增加 initAutomator
if (process.env.UNI_AUTOMATOR_APP_WEBVIEW === 'true') {
return null;
}
if (process.env.UNI_UTS_PLATFORM === 'app-android') {
const automatorPath = (0, uni_cli_shared_1.normalizePath)((0, uni_cli_shared_1.resolveBuiltIn)(`@dcloudio/uni-app-uts/lib/automator/android/index.uts`));
return {
code:
// 增加个换行,避免最后是注释且无换行
code + `;\nimport { initAutomator } from '${automatorPath}';`,
map: null,
};
}
else if (process.env.UNI_UTS_PLATFORM === 'app-ios') {
const automatorPath = (0, uni_cli_shared_1.normalizePath)((0, uni_cli_shared_1.resolveBuiltIn)(`@dcloudio/uni-app-uts/lib/automator/ios/automator.js`));
return {
code: code + `;\nimport '${automatorPath}';`,
map: null,
};
}
}
const automatorPath = (0, uni_cli_shared_1.normalizePath)((0, uni_cli_shared_1.resolveBuiltIn)(`@dcloudio/uni-${platform === 'app' ? 'app-plus' : platform}/lib/automator.js`));
return {
code: code + `;\nimport '${automatorPath}';`,
map: null,
};
}
},
};
}),
];