 | |  |  | AIWROK苹果系统打印H5界面日志输出
苹果H5界面.zip
(19.43 KB, 下载次数: 0)
- // ============================================
- // 主脚本 - 业务逻辑
- // 注意:WebView已在start.js中创建,这里直接使用
- // ============================================
- // 主任务执行示例
- function runMainTask() {
- LogManagerH5.info("开始执行主任务...");
-
- // 模拟任务执行
- LogManagerH5.gold("抖音极速版: 获得 350 金币");
- LogManagerH5.gold("快手极速版: 获得 420 金币");
- LogManagerH5.warn("百度极速版: 冷却中...");
- LogManagerH5.success("任务执行完成");
- LogManagerH5.gold("今日总收益: 770 金币");
- }
- // 启动任务
- LogManagerH5.info("主脚本已加载");
- runMainTask();
- /**
- * ============================================
- * 🍎 print日志系统完整示例
- * 功能: 日志记录、调试输出、画中画管理
- * 交流QQ群: 711841924 (群一) / 528816639 (苹果内测群)
- * ============================================
- */
复制代码- /**
- * ============================================
- * 日志桥接器 - 将print日志输出到H5界面
- * 版本: 1.1.0
- * 平台: iOS (AIWROK)
- * 功能: 桥接print日志系统到现有H5界面
- * 交流QQ群: 711841924 (群一) / 528816639 (苹果内测群)
- * ============================================
- */
- // 🍎交流QQ群:711841924(群)
- // 🍎交流QQ群:528816639 (苹果内测群)
- /**
- * 阻塞式延迟函数 (Rhino引擎兼容)
- * @param {number} ms - 延迟毫秒数
- */
- function _sleep(ms) {
- var start = Date.now();
- while (Date.now() - start < ms) {
- // 阻塞等待
- }
- }
- /**
- * LogBridge - 日志桥接器
- * 将print日志系统的输出桥接到指定的WebView
- */
- var LogBridge = {
- webView: null,
- isReady: false,
- pendingLogs: [],
- maxPendingLogs: 100,
-
- /**
- * 初始化桥接器
- * @param {WebView} webView - 目标WebView实例
- */
- init: function(webView) {
- this.webView = webView;
- this.isReady = false;
- this.pendingLogs = [];
-
- // 阻塞等待WebView加载完成
- _sleep(800);
-
- this.isReady = true;
- this._flushPendingLogs();
- printl('日志桥接器已就绪');
-
- return this;
- },
-
- /**
- * 发送日志到H5
- * @param {string} message - 日志消息
- * @param {string} level - 日志级别 (info/success/warn/error/gold/debug)
- */
- log: function(message, level) {
- level = level || 'info';
-
- // 如果还没准备好,缓存日志
- if (!this.isReady || !this.webView) {
- if (this.pendingLogs.length < this.maxPendingLogs) {
- this.pendingLogs.push({
- message: message,
- level: level,
- time: Date.now()
- });
- }
- return;
- }
-
- this._sendToWebView(message, level);
- },
-
- /**
- * 刷新缓存的日志
- */
- _flushPendingLogs: function() {
- if (this.pendingLogs.length === 0) return;
-
- printl('正在刷新 ' + this.pendingLogs.length + ' 条缓存日志...');
-
- // 逐条发送缓存的日志
- while (this.pendingLogs.length > 0) {
- var log = this.pendingLogs.shift();
- this._sendToWebView(log.message, log.level);
- // 小延迟避免阻塞
- _sleep(10);
- }
- },
-
- /**
- * 实际发送日志到WebView
- */
- _sendToWebView: function(message, level) {
- try {
- if (!this.webView) return;
-
- // 转义消息中的特殊字符
- var escapedMessage = message
- .replace(/\\/g, '\\\\')
- .replace(/'/g, "\\'")
- .replace(/"/g, '\\"')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/\t/g, '\\t');
-
- // 构建JavaScript代码
- var js = "if(typeof addLog === 'function') { addLog('" + escapedMessage + "', '" + level + "'); }";
-
- // 尝试多种方式执行JavaScript
- if (typeof this.webView.evaluateJavaScript === 'function') {
- this.webView.evaluateJavaScript(js);
- } else if (typeof this.webView.loadUrl === 'function') {
- var url = 'javascript:' + encodeURIComponent(js);
- this.webView.loadUrl(url);
- } else if (typeof this.webView.stringByEvaluatingJavaScriptFromString === 'function') {
- this.webView.stringByEvaluatingJavaScriptFromString(js);
- }
- } catch (e) {
- printl('发送日志失败: ' + e.message);
- }
- },
-
- // 快捷方法
- info: function(message) { this.log(message, 'info'); },
- success: function(message) { this.log(message, 'success'); },
- warn: function(message) { this.log(message, 'warn'); },
- error: function(message) { this.log(message, 'error'); },
- gold: function(message) { this.log(message, 'gold'); },
- debug: function(message) { this.log(message, 'debug'); }
- };
- /**
- * 增强版LogManager - 自动桥接到H5
- */
- var LogManagerH5 = {
- logLevel: 'DEBUG',
- enablePrefix: true,
- bridge: null,
-
- ICONS: {
- DEBUG: '[D]',
- INFO: '[I]',
- WARN: '[W]',
- ERROR: '[E]',
- SUCCESS: '[S]',
- GOLD: '[G]'
- },
-
- /**
- * 初始化并绑定到WebView
- * @param {WebView} webView - H5的WebView实例
- */
- init: function(webView) {
- this.bridge = LogBridge;
- this.bridge.init(webView);
- this.info('日志系统已连接到H5界面');
- return this;
- },
-
- _formatMessage: function(message, icon) {
- if (this.enablePrefix && icon) {
- return icon + ' ' + message;
- }
- return message;
- },
-
- debug: function(message) {
- if (this.bridge) {
- this.bridge.log(this._formatMessage(message, this.ICONS.DEBUG), 'debug');
- }
- printl(message);
- },
-
- info: function(message) {
- if (this.bridge) {
- this.bridge.log(this._formatMessage(message, this.ICONS.INFO), 'info');
- }
- print.log(message);
- },
-
- warn: function(message) {
- if (this.bridge) {
- this.bridge.log(this._formatMessage(message, this.ICONS.WARN), 'warn');
- }
- print.warn(message);
- },
-
- error: function(message) {
- if (this.bridge) {
- this.bridge.log(this._formatMessage(message, this.ICONS.ERROR), 'error');
- }
- print.warn(message);
- },
-
- success: function(message) {
- if (this.bridge) {
- this.bridge.log(this._formatMessage(message, this.ICONS.SUCCESS), 'success');
- }
- print.log(message);
- },
-
- gold: function(message) {
- if (this.bridge) {
- this.bridge.log(this._formatMessage(message, this.ICONS.GOLD), 'gold');
- }
- print.log(message);
- }
- };
- /**
- * 使用示例:
- *
- * // 在你的主脚本中:
- * Import("LogBridge.js");
- *
- * var web = new WebView();
- * web.show();
- * web.loadFile('h5.html');
- *
- * // 初始化日志桥接 (会阻塞等待WebView加载)
- * LogManagerH5.init(web);
- *
- * // 现在所有日志都会输出到H5界面
- * LogManagerH5.info('系统启动');
- * LogManagerH5.success('任务完成');
- * LogManagerH5.gold('获得100金币');
- */
- /**
- * ============================================
- * 🍎 print日志系统完整示例
- * 功能: 日志记录、调试输出、画中画管理
- * 交流QQ群: 711841924 (群一) / 528816639 (苹果内测群)
- * ============================================
- */
复制代码
| |  | |  |
|