 | |  |  | 苹果脚本示例Config配置H5集成
- // 🍎交流QQ群:711841924(群)
- // 🍎交流QQ群:528816639 (苹果内测群)
- // ============================================
- // AIWROK Config 配置管理器 - H5集成示例
- // ============================================
- printl("====================================");
- printl("启动 AIWROK Config 配置管理器");
- printl("====================================");
- // ============================================
- // 配置文件路径管理
- // ============================================
- var resourcesPath = project.getResourcesPath();
- // 确保路径末尾只有一个斜杠,避免双斜杠问题
- if (resourcesPath.endsWith("/")) {
- var CONFIG_FILE_PATH = resourcesPath + "config.json";
- } else {
- var CONFIG_FILE_PATH = resourcesPath + "/config.json";
- }
- printl("配置文件路径: " + CONFIG_FILE_PATH);
- /**
- * 从文件加载配置
- * @returns {Object} 配置对象
- */
- function loadConfigFromFile() {
- try {
- if (typeof files !== 'undefined' && files.exists(CONFIG_FILE_PATH)) {
- var content = files.read(CONFIG_FILE_PATH);
- if (content) {
- var configs = JSON.parse(content);
- printl("✅ 从文件加载配置成功: " + Object.keys(configs).length + " 个配置项");
- return configs;
- }
- }
- } catch (e) {
- printl("⚠️ 加载配置文件失败: " + e.message);
- }
- return {};
- }
- /**
- * 保存配置到文件
- * @param {Object} configs - 配置对象
- * @returns {boolean} 是否成功
- */
- function saveConfigToFile(configs) {
- try {
- if (typeof files !== 'undefined') {
- var content = JSON.stringify(configs, null, 2);
- files.write(CONFIG_FILE_PATH, content);
- printl("✅ 配置已保存到文件: " + CONFIG_FILE_PATH);
- return true;
- }
- } catch (e) {
- printl("⚠️ 保存配置文件失败: " + e.message);
- }
- return false;
- }
- // 启动时从文件加载配置
- var loadedConfigs = loadConfigFromFile();
- // 创建 WebView 实例
- var web = new WebView();
- // 显示 WebView 界面
- web.show();
- // 加载本地 HTML 文件
- var htmlPath = project.getCodePath() + "h5.html";
- web.loadFile(htmlPath);
- // 打印加载信息
- printl("WebView 已创建并加载:" + htmlPath);
- // 导入日志桥接器
- Import("LogBridge.js");
- // 初始化日志桥接(会阻塞等待 WebView 加载完成)
- LogManagerH5.init(web);
- // 延迟执行,确保 H5 页面完全加载
- _sleep(2000);
- // 发送测试日志到 H5 界面
- LogManagerH5.success("系统启动成功");
- LogManagerH5.info("WebView 已就绪");
- // ============================================
- // 注册 H5 与 Native 交互方法
- // ============================================
- printl("\n正在注册 H5 交互方法...");
- /**
- * 设置配置(供 H5 调用)
- * @param {string} key - 配置键
- * @param {string} value - 配置值
- * @returns {boolean} 是否成功
- */
- this.setConfig = function(key, value) {
- try {
- var fullKey = "AIWROK_" + key;
- config.setConfig(fullKey, String(value));
- printl("[H5→Native] 设置配置: " + fullKey + " = " + value);
- LogManagerH5.success("✓ 配置已保存: " + key);
- return true;
- } catch (e) {
- printl("[错误] 设置配置失败: " + e.message);
- LogManagerH5.error("✗ 保存失败: " + e.message);
- return false;
- }
- };
- /**
- * 获取配置(供 H5 调用)
- * @param {string} key - 配置键
- * @returns {string} 配置值
- */
- this.getConfig = function(key) {
- try {
- var fullKey = "AIWROK_" + key;
- var value = config.getConfig(fullKey, "");
- printl("[H5→Native] 获取配置: " + fullKey + " = " + value);
- return value;
- } catch (e) {
- printl("[错误] 获取配置失败: " + e.message);
- return "";
- }
- };
- /**
- * 批量保存配置(供 H5 调用)
- * @param {string} configsJson - JSON 字符串格式的配置对象
- * @returns {boolean} 是否成功
- */
- this.batchSetConfigs = function(configsJson) {
- try {
- var configs = JSON.parse(configsJson);
- var count = 0;
- for (var key in configs) {
- config.setConfig("AIWROK_" + key, String(configs[key]));
- count++;
- }
- printl("[H5→Native] 批量保存 " + count + " 个配置");
- LogManagerH5.success("✓ 批量保存 " + count + " 个配置");
- return true;
- } catch (e) {
- printl("[错误] 批量保存失败: " + e.message);
- LogManagerH5.error("✗ 批量保存失败: " + e.message);
- return false;
- }
- };
- /**
- * 批量获取配置(供 H5 调用)
- * @param {string} keysJson - JSON 字符串格式的键数组
- * @returns {string} JSON 字符串格式的配置对象
- */
- this.batchGetConfigs = function(keysJson) {
- try {
- var keys = JSON.parse(keysJson);
- var result = {};
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- result[key] = config.getConfig("AIWROK_" + key, "");
- }
- printl("[H5→Native] 批量获取 " + keys.length + " 个配置");
- return JSON.stringify(result);
- } catch (e) {
- printl("[错误] 批量获取失败: " + e.message);
- return "{}";
- }
- };
- /**
- * 导出所有配置(供 H5 调用)
- * @returns {string} JSON 字符串格式的所有配置
- */
- this.exportAllConfigs = function() {
- try {
- var allKeys = [
- "game_name", "task_delay", "max_rounds", "enable_combat", "auto_heal",
- "ocr_language", "ocr_confidence", "ocr_timeout", "ocr_retry",
- "ui_theme", "ui_font_size", "ui_show_toolbar", "ui_animation",
- "network_base_url", "network_version", "network_timeout", "network_retries"
- ];
-
- var result = {};
- for (var i = 0; i < allKeys.length; i++) {
- var key = allKeys[i];
- result[key] = config.getConfig("AIWROK_" + key, "");
- }
-
- var jsonStr = JSON.stringify(result, null, 2);
- printl("[H5→Native] 导出所有配置");
- LogManagerH5.info("📤 配置已导出");
- return jsonStr;
- } catch (e) {
- printl("[错误] 导出配置失败: " + e.message);
- LogManagerH5.error("✗ 导出失败: " + e.message);
- return "{}";
- }
- };
- /**
- * 恢复默认配置(供 H5 调用)
- * @param {string} category - 配置分类 (game/ocr/ui/network/all)
- * @returns {string} JSON 字符串格式的默认配置
- */
- this.resetToDefault = function(category) {
- try {
- var defaultConfigs = {};
-
- if (category === "game" || category === "all") {
- defaultConfigs.game_name = "梦幻西游";
- defaultConfigs.task_delay = "2000";
- defaultConfigs.max_rounds = "10";
- defaultConfigs.enable_combat = "true";
- defaultConfigs.auto_heal = "true";
- }
-
- if (category === "ocr" || category === "all") {
- defaultConfigs.ocr_language = "zh-CN";
- defaultConfigs.ocr_confidence = "80";
- defaultConfigs.ocr_timeout = "5000";
- defaultConfigs.ocr_retry = "3";
- }
-
- if (category === "ui" || category === "all") {
- defaultConfigs.ui_theme = "dark";
- defaultConfigs.ui_font_size = "16";
- defaultConfigs.ui_show_toolbar = "true";
- defaultConfigs.ui_animation = "true";
- }
-
- if (category === "network" || category === "all") {
- defaultConfigs.network_base_url = "https://api.example.com";
- defaultConfigs.network_version = "v2";
- defaultConfigs.network_timeout = "10000";
- defaultConfigs.network_retries = "3";
- }
-
- // 保存到 config
- for (var key in defaultConfigs) {
- config.setConfig("AIWROK_" + key, defaultConfigs[key]);
- }
-
- // 同时保存到文件
- saveConfigToFile(defaultConfigs);
-
- printl("[H5→Native] 恢复默认配置: " + category);
- LogManagerH5.warn("🗑️ 已恢复" + category + "默认配置");
- return JSON.stringify(defaultConfigs);
- } catch (e) {
- printl("[错误] 恢复默认配置失败: " + e.message);
- LogManagerH5.error("✗ 恢复失败: " + e.message);
- return "{}";
- }
- };
- /**
- * Toast 提示(供 H5 调用)
- * @param {string} message - 提示消息
- */
- this.showToast = function(message) {
- printl("[H5→Native] Toast: " + message);
- toast(message);
- };
- /**
- * 添加日志(供 H5 调用)
- * @param {string} message - 日志消息
- * @param {string} level - 日志级别
- */
- this.addNativeLog = function(message, level) {
- printl("[H5 日志][" + level + "] " + message);
- };
- /**
- * 获取配置文件路径(供 H5 调用)
- * @returns {string} 配置文件路径
- */
- this.getConfigFilePath = function() {
- return CONFIG_FILE_PATH;
- };
- /**
- * 从文件加载配置(供 H5 调用)
- * @returns {string} JSON 字符串格式的配置
- */
- this.loadConfigFromFile = function() {
- try {
- var configs = loadConfigFromFile();
- // 同步到 config 系统
- for (var key in configs) {
- config.setConfig("AIWROK_" + key, configs[key]);
- }
- printl("[H5→Native] 从文件加载配置: " + Object.keys(configs).length + " 个配置项");
- LogManagerH5.success("📂 已从文件加载配置");
- return JSON.stringify(configs);
- } catch (e) {
- printl("[错误] 从文件加载配置失败: " + e.message);
- LogManagerH5.error("✗ 加载失败: " + e.message);
- return "{}";
- }
- };
- /**
- * 保存配置到文件(供 H5 调用)
- * @returns {boolean} 是否成功
- */
- this.saveConfigToFile = function() {
- try {
- // 从 config 系统获取所有配置
- var allKeys = [
- "game_name", "task_delay", "max_rounds", "enable_combat", "auto_heal"
- ];
- var configs = {};
- for (var i = 0; i < allKeys.length; i++) {
- var key = allKeys[i];
- var value = config.getConfig("AIWROK_" + key, "");
- if (value) {
- configs[key] = value;
- }
- }
-
- // 保存到文件
- var success = saveConfigToFile(configs);
- if (success) {
- printl("[H5→Native] 配置已保存到文件: " + CONFIG_FILE_PATH);
- LogManagerH5.success("💾 配置已保存到文件");
- }
- return success;
- } catch (e) {
- printl("[错误] 保存到文件失败: " + e.message);
- LogManagerH5.error("✗ 保存失败: " + e.message);
- return false;
- }
- };
- printl("✓ H5 交互方法注册完成");
- printl(" - this.setConfig");
- printl(" - this.getConfig");
- printl(" - this.batchSetConfigs");
- printl(" - this.batchGetConfigs");
- printl(" - this.exportAllConfigs");
- printl(" - this.resetToDefault");
- printl(" - this.showToast");
- printl(" - this.addNativeLog");
- printl(" - this.getConfigFilePath ⭐ 新增");
- printl(" - this.loadConfigFromFile ⭐ 新增");
- printl(" - this.saveConfigToFile ⭐ 新增");
- LogManagerH5.success("✓ Native 桥接方法已就绪");
- // ============================================
- // HID 滑动功能演示
- // ============================================
- printl("\n=== HID 滑动功能演示 ===");
- // 等待 H5 页面完全加载
- _sleep(2000);
- // 演示 HID 滑动 - 使用 hid.swip() 方法
- printl("\n👆 演示 1: 向下滑动(查看底部内容)");
- try { toast("👆 向下滑动..."); } catch(e) {}
- try {
- // hid.swip(x1, y1, x2, y2, press, swipTime, delayUp)
- // x1=540, y1=300 (起点)
- // x2=540, y2=1200 (终点,向下)
- // press=50 (按下等待50ms)
- // swipTime=800 (滑动时长800ms)
- // delayUp=100 (结束后延迟100ms抬起)
- hid.swip(540, 300, 540, 1200, 50, 800, 100);
- printl("✅ HID 向下滑动执行成功");
- } catch(e) {
- printl("❌ HID 滑动失败: " + e.message);
- }
- _sleep(2500);
- printl("\n👆 演示 2: 向上滑动(返回顶部)");
- try { toast("👆 向上滑动..."); } catch(e) {}
- try {
- // hid.swip(x1, y1, x2, y2, press, swipTime, delayUp)
- // x1=540, y1=1200 (起点,底部)
- // x2=540, y2=300 (终点,顶部,向上)
- hid.swip(540, 1200, 540, 300, 50, 800, 100);
- printl("✅ HID 向上滑动执行成功");
- } catch(e) {
- printl("❌ HID 滑动失败: " + e.message);
- }
- _sleep(1500);
- printl("✓ HID 滑动演示完成");
- // ============================================
- // 演示:预设配置数据
- // ============================================
- _sleep(1000);
- printl("\n=== 预设配置数据 ===");
- try { toast("⚙️ 加载默认配置..."); } catch(e) {}
- setConfig("game_name", "梦幻西游");
- setConfig("task_delay", "2000");
- setConfig("max_rounds", "10");
- setConfig("enable_combat", "true");
- setConfig("auto_heal", "true");
- printl("✓ 预设配置完成");
- LogManagerH5.success("✓ 初始配置已加载");
- try { toast("✅ 配置加载完成"); } catch(e) {}
- printl("\n=== 配置管理器已就绪 ===");
- printl("✓ H5 界面可以进行可视化配置管理");
- printl("✓ 所有配置自动保存到 config 系统");
- printl("✓ 支持 HID 滑动、Toast 提示、CONFIG 操作");
- printl("\n提示:在 H5 界面中操作配置即可实时同步");
- // ============================================
- // Toast 演示
- // ============================================
- _sleep(2000);
- try { toast("🎉 欢迎使用 AIWROK 配置中心"); } catch(e) {}
- _sleep(1500);
- try { toast("💾 点击按钮保存配置"); } catch(e) {}
- _sleep(1500);
- try { toast("📂 点击按钮加载配置"); } catch(e) {}
- _sleep(1500);
- try { toast("🔧 测试 CONFIG 功能"); } catch(e) {}
- printl("\n✓ 所有演示完成,现在可以使用 H5 界面了");
复制代码
| |  | |  |
|