B2B网络软件

标题: 原生UIAIWROK软件事件监听示例 [打印本页]

作者: YYPOST群发软件    时间: 2 小时前
标题: 原生UIAIWROK软件事件监听示例


原生UIAIWROK软件事件监听示例

原生UIAIWROK软件事件监听示例 B2B网络软件

  1. /**
  2. * AIWROK 事件监听示例
  3. * 演示各种系统事件监听功能:广播、通知、按钮事件、Toast等
  4. */

  5. var ac = new activity();
  6. ac.loadSXML(`
  7. <ScrollView
  8.     android:layout_width="match_parent"
  9.     android:layout_height="match_parent">

  10.     <LinearLayout
  11.         android:layout_width="match_parent"
  12.         android:layout_height="wrap_content"
  13.         android:orientation="vertical"
  14.         android:padding="16dp"
  15.         android:background="#f5f5f5">

  16.     <TextView
  17.         android:layout_width="match_parent"
  18.         android:layout_height="wrap_content"
  19.         android:text="AIWROK 事件监听示例"
  20.         android:textSize="24sp"
  21.         android:textStyle="bold"
  22.         android:textColor="#333333"
  23.         android:gravity="center"
  24.         android:layout_marginBottom="10dp"/>

  25.     <!-- QQ群信息 -->
  26.     <LinearLayout
  27.         android:layout_width="match_parent"
  28.         android:layout_height="wrap_content"
  29.         android:orientation="vertical"
  30.         android:background="#FFF3E0"
  31.         android:padding="10dp"
  32.         android:layout_marginBottom="15dp">

  33.         <TextView
  34.             android:layout_width="match_parent"
  35.             android:layout_height="wrap_content"
  36.             android:text="&#127822;&#127822;:711841924"
  37.             android:textSize="14sp"
  38.             android:textColor="#E65100"
  39.             android:gravity="center"
  40.             android:layout_marginBottom="5dp"/>

  41.         <TextView
  42.             android:layout_width="match_parent"
  43.             android:layout_height="wrap_content"
  44.             android:text="&#127822;&#127822;2:528816639"
  45.             android:textSize="14sp"
  46.             android:textColor="#E65100"
  47.             android:gravity="center"/>
  48.     </LinearLayout>

  49.     <!-- 监听状态显示 -->
  50.     <TextView
  51.         android:id="@+id/tvListenerStatus"
  52.         android:layout_width="match_parent"
  53.         android:layout_height="wrap_content"
  54.         android:text="监听状态: 未启动"
  55.         android:textSize="16sp"
  56.         android:textColor="#666666"
  57.         android:gravity="center"
  58.         android:padding="10dp"
  59.         android:background="#ffffff"
  60.         android:layout_marginBottom="15dp"/>

  61.     <!-- 广播事件监听 -->
  62.     <TextView
  63.         android:layout_width="match_parent"
  64.         android:layout_height="wrap_content"
  65.         android:text="&#128225; 广播事件监听"
  66.         android:textSize="16sp"
  67.         android:textStyle="bold"
  68.         android:textColor="#333333"
  69.         android:layout_marginBottom="10dp"/>

  70.     <Button
  71.         android:id="@+id/btnBroadcast"
  72.         android:layout_width="match_parent"
  73.         android:layout_height="wrap_content"
  74.         android:text="发送测试广播"
  75.         android:background="#2196F3"
  76.         android:textColor="#ffffff"
  77.         android:layout_marginBottom="10dp"/>

  78.     <TextView
  79.         android:id="@+id/tvBroadcastLog"
  80.         android:layout_width="match_parent"
  81.         android:layout_height="wrap_content"
  82.         android:text="广播日志将显示在这里..."
  83.         android:textSize="14sp"
  84.         android:textColor="#666666"
  85.         android:padding="10dp"
  86.         android:background="#ffffff"
  87.         android:layout_marginBottom="20dp"/>

  88.     <!-- 通知事件监听 -->
  89.     <TextView
  90.         android:layout_width="match_parent"
  91.         android:layout_height="wrap_content"
  92.         android:text="&#128276; 通知事件监听"
  93.         android:textSize="16sp"
  94.         android:textStyle="bold"
  95.         android:textColor="#333333"
  96.         android:layout_marginBottom="10dp"/>

  97.     <TextView
  98.         android:layout_width="match_parent"
  99.         android:layout_height="wrap_content"
  100.         android:text="开启后将监听系统通知,按钮触发模拟通知"
  101.         android:textSize="14sp"
  102.         android:textColor="#999999"
  103.         android:layout_marginBottom="10dp"/>

  104.     <LinearLayout
  105.         android:layout_width="match_parent"
  106.         android:layout_height="wrap_content"
  107.         android:orientation="horizontal"
  108.         android:layout_marginBottom="10dp">

  109.         <Button
  110.             android:id="@+id/btnStartNotificationListener"
  111.             android:layout_width="0dp"
  112.             android:layout_height="wrap_content"
  113.             android:layout_weight="1"
  114.             android:text="开启监听"
  115.             android:background="#4CAF50"
  116.             android:textColor="#ffffff"
  117.             android:layout_marginRight="5dp"/>

  118.         <Button
  119.             android:id="@+id/btnStopNotificationListener"
  120.             android:layout_width="0dp"
  121.             android:layout_height="wrap_content"
  122.             android:layout_weight="1"
  123.             android:text="关闭监听"
  124.             android:background="#F44336"
  125.             android:textColor="#ffffff"
  126.             android:layout_marginLeft="5dp"/>
  127.     </LinearLayout>

  128.     <Button
  129.         android:id="@+id/btnSimulateNotification"
  130.         android:layout_width="match_parent"
  131.         android:layout_height="wrap_content"
  132.         android:text="模拟通知事件"
  133.         android:background="#9C27B0"
  134.         android:textColor="#ffffff"
  135.         android:layout_marginBottom="10dp"/>

  136.     <TextView
  137.         android:id="@+id/tvNotificationLog"
  138.         android:layout_width="match_parent"
  139.         android:layout_height="wrap_content"
  140.         android:text="通知日志将显示在这里..."
  141.         android:textSize="14sp"
  142.         android:textColor="#666666"
  143.         android:padding="10dp"
  144.         android:background="#ffffff"
  145.         android:layout_marginBottom="20dp"/>

  146.     <!-- 按钮事件监听 -->
  147.     <TextView
  148.         android:layout_width="match_parent"
  149.         android:layout_height="wrap_content"
  150.         android:text="⏸️ 暂停/停止按钮事件"
  151.         android:textSize="16sp"
  152.         android:textStyle="bold"
  153.         android:textColor="#333333"
  154.         android:layout_marginBottom="10dp"/>

  155.     <TextView
  156.         android:layout_width="match_parent"
  157.         android:layout_height="wrap_content"
  158.         android:text="监听脚本运行时的暂停和停止按钮"
  159.         android:textSize="14sp"
  160.         android:textColor="#999999"
  161.         android:layout_marginBottom="10dp"/>

  162.     <Button
  163.         android:id="@+id/btnTestPause"
  164.         android:layout_width="match_parent"
  165.         android:layout_height="wrap_content"
  166.         android:text="模拟暂停按钮"
  167.         android:background="#FF9800"
  168.         android:textColor="#ffffff"
  169.         android:layout_marginBottom="10dp"/>

  170.     <Button
  171.         android:id="@+id/btnTestStop"
  172.         android:layout_width="match_parent"
  173.         android:layout_height="wrap_content"
  174.         android:text="模拟停止按钮"
  175.         android:background="#F44336"
  176.         android:textColor="#ffffff"
  177.         android:layout_marginBottom="10dp"/>

  178.     <TextView
  179.         android:id="@+id/tvBtnEventLog"
  180.         android:layout_width="match_parent"
  181.         android:layout_height="wrap_content"
  182.         android:text="按钮事件日志将显示在这里..."
  183.         android:textSize="14sp"
  184.         android:textColor="#666666"
  185.         android:padding="10dp"
  186.         android:background="#ffffff"
  187.         android:layout_marginBottom="20dp"/>

  188.     <!-- Toast事件监听 -->
  189.     <TextView
  190.         android:layout_width="match_parent"
  191.         android:layout_height="wrap_content"
  192.         android:text="&#127838; Toast事件监听"
  193.         android:textSize="16sp"
  194.         android:textStyle="bold"
  195.         android:textColor="#333333"
  196.         android:layout_marginBottom="10dp"/>

  197.     <TextView
  198.         android:layout_width="match_parent"
  199.         android:layout_height="wrap_content"
  200.         android:text="监听脚本中显示的Toast消息"
  201.         android:textSize="14sp"
  202.         android:textColor="#999999"
  203.         android:layout_marginBottom="10dp"/>

  204.     <Button
  205.         android:id="@+id/btnShowToast"
  206.         android:layout_width="match_parent"
  207.         android:layout_height="wrap_content"
  208.         android:text="显示Toast消息"
  209.         android:background="#795548"
  210.         android:textColor="#ffffff"
  211.         android:layout_marginBottom="10dp"/>

  212.     <TextView
  213.         android:id="@+id/tvToastLog"
  214.         android:layout_width="match_parent"
  215.         android:layout_height="wrap_content"
  216.         android:text="Toast日志将显示在这里..."
  217.         android:textSize="14sp"
  218.         android:textColor="#666666"
  219.         android:padding="10dp"
  220.         android:background="#ffffff"
  221.         android:layout_marginBottom="20dp"/>

  222.     <!-- 热修复完成事件 -->
  223.     <TextView
  224.         android:layout_width="match_parent"
  225.         android:layout_height="wrap_content"
  226.         android:text="&#128295; 热修复完成事件"
  227.         android:textSize="16sp"
  228.         android:textStyle="bold"
  229.         android:textColor="#333333"
  230.         android:layout_marginBottom="10dp"/>

  231.     <Button
  232.         android:id="@+id/btnSimulateHotfix"
  233.         android:layout_width="match_parent"
  234.         android:layout_height="wrap_content"
  235.         android:text="模拟热修复完成"
  236.         android:background="#009688"
  237.         android:textColor="#ffffff"
  238.         android:layout_marginBottom="10dp"/>

  239.     <TextView
  240.         android:id="@+id/tvHotfixLog"
  241.         android:layout_width="match_parent"
  242.         android:layout_height="wrap_content"
  243.         android:text="热修复日志将显示在这里..."
  244.         android:textSize="14sp"
  245.         android:textColor="#666666"
  246.         android:padding="10dp"
  247.         android:background="#ffffff"
  248.         android:layout_marginBottom="20dp"/>

  249.     <!-- 脚本停止事件 -->
  250.     <TextView
  251.         android:layout_width="match_parent"
  252.         android:layout_height="wrap_content"
  253.         android:text="⏹️ 脚本停止事件"
  254.         android:textSize="16sp"
  255.         android:textStyle="bold"
  256.         android:textColor="#333333"
  257.         android:layout_marginBottom="10dp"/>

  258.     <Button
  259.         android:id="@+id/btnSimulateStop"
  260.         android:layout_width="match_parent"
  261.         android:layout_height="wrap_content"
  262.         android:text="模拟脚本停止"
  263.         android:background="#607D8B"
  264.         android:textColor="#ffffff"
  265.         android:layout_marginBottom="10dp"/>

  266.     <TextView
  267.         android:id="@+id/tvStopLog"
  268.         android:layout_width="match_parent"
  269.         android:layout_height="wrap_content"
  270.         android:text="停止事件日志将显示在这里..."
  271.         android:textSize="14sp"
  272.         android:textColor="#666666"
  273.         android:padding="10dp"
  274.         android:background="#ffffff"
  275.         android:layout_marginBottom="20dp"/>

  276.     <!-- 日志显示区域 -->
  277.     <TextView
  278.         android:layout_width="match_parent"
  279.         android:layout_height="wrap_content"
  280.         android:text="&#128203; 综合日志"
  281.         android:textSize="16sp"
  282.         android:textStyle="bold"
  283.         android:textColor="#333333"
  284.         android:layout_marginBottom="10dp"/>

  285.     <TextView
  286.         android:id="@+id/tvLog"
  287.         android:layout_width="match_parent"
  288.         android:layout_height="200dp"
  289.         android:text="综合日志将显示在这里...\n\n提示:\n1. 点击上方各区域按钮可模拟对应事件\n2. 实际使用时这些事件由系统自动触发\n3. 本示例帮助你理解事件监听的使用方法"
  290.         android:textSize="14sp"
  291.         android:textColor="#666666"
  292.         android:padding="10dp"
  293.         android:background="#ffffff"
  294.         android:scrollbars="vertical"
  295.         android:gravity="top"/>

  296.     </LinearLayout>

  297. </ScrollView>
  298. `);

  299. // 日志悬浮窗
  300. var 日志悬浮窗 = new floatUI();
  301. 日志悬浮窗.loadXML(
  302.     '<LinearLayout orientation="vertical" w="8" h="8" gravity="center">' +
  303.     '  <TextView id="rz" textColor="#ff3ee4" background="#000000" layout_width="wrap_content" layout_height="wrap_content" />' +
  304.     '</LinearLayout>'
  305. );
  306. var g_日志 = 日志悬浮窗.findViewById('rz');
  307. if (g_日志) {
  308.     setTimeout(function() {
  309.         日志悬浮窗.setPosition(0, (screen.getScreenHeight() * 0.4));
  310.         g_日志.setText("监听示例已启动");
  311.     }, 100);
  312. }

  313. // 获取控件
  314. var tvListenerStatus = ac.findViewById("tvListenerStatus");
  315. var btnBroadcast = ac.findViewById("btnBroadcast");
  316. var tvBroadcastLog = ac.findViewById("tvBroadcastLog");
  317. var btnStartNotificationListener = ac.findViewById("btnStartNotificationListener");
  318. var btnStopNotificationListener = ac.findViewById("btnStopNotificationListener");
  319. var btnSimulateNotification = ac.findViewById("btnSimulateNotification");
  320. var tvNotificationLog = ac.findViewById("tvNotificationLog");
  321. var btnTestPause = ac.findViewById("btnTestPause");
  322. var btnTestStop = ac.findViewById("btnTestStop");
  323. var tvBtnEventLog = ac.findViewById("tvBtnEventLog");
  324. var btnShowToast = ac.findViewById("btnShowToast");
  325. var tvToastLog = ac.findViewById("tvToastLog");
  326. var btnSimulateHotfix = ac.findViewById("btnSimulateHotfix");
  327. var tvHotfixLog = ac.findViewById("tvHotfixLog");
  328. var btnSimulateStop = ac.findViewById("btnSimulateStop");
  329. var tvStopLog = ac.findViewById("tvStopLog");
  330. var tvLog = ac.findViewById("tvLog");

  331. // 标记脚本是否正在运行
  332. var isScriptRunning = true;

  333. // 日志记录函数
  334. function logToAll(source, message) {
  335.     // 输出到控制台(总是执行)
  336.     console.log("[" + source + "] " + message);

  337.     // 如果脚本已停止或UI已销毁,不再更新界面
  338.     if (!isScriptRunning || !tvLog) {
  339.         return;
  340.     }

  341.     var timestamp = new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date());
  342.     var logEntry = "[" + timestamp + "] " + message;

  343.     // 更新综合日志
  344.     try {
  345.         var currentLog = tvLog.getText();
  346.         if (!currentLog) {
  347.             currentLog = "";
  348.         }
  349.         currentLog = String(currentLog);
  350.         var lines = currentLog.split("\n");
  351.         // 过滤空行
  352.         while (lines.length > 0 && lines[0] === "") {
  353.             lines.shift();
  354.         }
  355.         if (lines.length > 50) {
  356.             lines = lines.slice(-50);
  357.         }
  358.         lines.push(logEntry);
  359.         tvLog.setText(lines.join("\n"));
  360.     } catch (e) {
  361.         // UI可能已销毁,忽略错误
  362.         console.log("更新日志失败: " + e);
  363.     }

  364.     // 更新悬浮窗
  365.     if (g_日志) {
  366.         try {
  367.             g_日志.setText(source + ": " + message);
  368.         } catch (e) {
  369.             // 忽略
  370.         }
  371.     }
  372. }

  373. // 安全设置文本的辅助函数
  374. function safeSetText(view, text) {
  375.     if (!isScriptRunning || !view) {
  376.         return;
  377.     }
  378.     try {
  379.         view.setText(text);
  380.     } catch (e) {
  381.         // UI可能已销毁,忽略错误
  382.     }
  383. }

  384. // 更新监听状态
  385. function updateStatus(status) {
  386.     console.log("监听状态: " + status);
  387.     safeSetText(tvListenerStatus, "监听状态: " + status);
  388. }

  389. // ==================== 设置事件监听器 ====================

  390. // 1. 广播事件监听
  391. try {
  392.     event.onBroadcastEvent(function(msg) {
  393.         logToAll("广播", "收到广播: " + msg);
  394.         safeSetText(tvBroadcastLog, "收到广播: " + msg);
  395.     });
  396.     logToAll("系统", "✅ 广播事件监听器已设置");
  397. } catch (e) {
  398.     logToAll("错误", "设置广播监听失败: " + e);
  399. }

  400. // 2. 通知事件监听
  401. var notificationListenerEnabled = false;

  402. try {
  403.     event.onNotificationEvent(function(notification) {
  404.         try {
  405.             var title = notification.getTitle ? notification.getTitle() : "无标题";
  406.             var text = notification.getText ? notification.getText() : "无内容";
  407.             logToAll("通知", "收到通知 - 标题: " + title + ", 内容: " + text);
  408.             safeSetText(tvNotificationLog, "收到通知\n标题: " + title + "\n内容: " + text);
  409.         } catch (e) {
  410.             logToAll("通知", "处理通知失败: " + e);
  411.         }
  412.     });
  413.     logToAll("系统", "✅ 通知事件监听器已设置");
  414. } catch (e) {
  415.     logToAll("错误", "设置通知监听失败: " + e);
  416. }

  417. // 3. 暂停按钮事件监听
  418. try {
  419.     event.onPauseBtnEvent(function() {
  420.         logToAll("按钮", "暂停按钮被点击");
  421.         safeSetText(tvBtnEventLog, "暂停按钮被点击\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  422.     });
  423.     logToAll("系统", "✅ 暂停按钮事件监听器已设置");
  424. } catch (e) {
  425.     logToAll("错误", "设置暂停按钮监听失败: " + e);
  426. }

  427. // 4. 停止按钮事件监听
  428. try {
  429.     event.onStopBtnEvent(function() {
  430.         logToAll("按钮", "停止按钮被点击");
  431.         safeSetText(tvBtnEventLog, "停止按钮被点击\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  432.     });
  433.     logToAll("系统", "✅ 停止按钮事件监听器已设置");
  434. } catch (e) {
  435.     logToAll("错误", "设置停止按钮监听失败: " + e);
  436. }

  437. // 5. 脚本停止事件监听
  438. try {
  439.     event.onStopEvent(function() {
  440.         isScriptRunning = false;
  441.         console.log("脚本停止事件触发,停止更新UI");
  442.         safeSetText(tvStopLog, "脚本停止事件触发\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  443.     });
  444.     logToAll("系统", "✅ 脚本停止事件监听器已设置");
  445. } catch (e) {
  446.     logToAll("错误", "设置脚本停止监听失败: " + e);
  447. }

  448. // 6. Toast事件监听
  449. try {
  450.     event.onToastEvent(function(msg) {
  451.         logToAll("Toast", "收到Toast: " + msg);
  452.         safeSetText(tvToastLog, "收到Toast: " + msg);
  453.     });
  454.     logToAll("系统", "✅ Toast事件监听器已设置");
  455. } catch (e) {
  456.     logToAll("错误", "设置Toast监听失败: " + e);
  457. }

  458. // 7. 热修复完成事件监听
  459. try {
  460.     event.onHotfixFinish(function(success) {
  461.         var result = success ? "成功" : "失败";
  462.         logToAll("热修复", "热修复完成,结果: " + result);
  463.         safeSetText(tvHotfixLog, "热修复完成\n结果: " + result + "\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  464.     });
  465.     logToAll("系统", "✅ 热修复完成事件监听器已设置");
  466. } catch (e) {
  467.     logToAll("错误", "设置热修复监听失败: " + e);
  468. }

  469. // ==================== 按钮点击事件 ====================

  470. // 发送测试广播
  471. btnBroadcast.setOnClickListener(function() {
  472.     logToAll("测试", "发送测试广播");
  473.     safeSetText(tvBroadcastLog, "已发送测试广播\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  474.     // 实际发送广播
  475.     try {
  476.         if (typeof broadcast !== 'undefined') {
  477.             broadcast.send("test_broadcast");
  478.         }
  479.     } catch (e) {
  480.         logToAll("错误", "发送广播失败: " + e);
  481.     }
  482. });

  483. // 开启通知监听
  484. btnStartNotificationListener.setOnClickListener(function() {
  485.     notificationListenerEnabled = true;
  486.     logToAll("测试", "通知监听已开启");
  487.     safeSetText(tvNotificationLog, "通知监听已开启\n等待系统通知...");
  488. });

  489. // 关闭通知监听
  490. btnStopNotificationListener.setOnClickListener(function() {
  491.     notificationListenerEnabled = false;
  492.     logToAll("测试", "通知监听已关闭");
  493.     safeSetText(tvNotificationLog, "通知监听已关闭");
  494. });

  495. // 模拟通知事件
  496. btnSimulateNotification.setOnClickListener(function() {
  497.     logToAll("测试", "模拟通知事件");
  498.     safeSetText(tvNotificationLog, "模拟通知\n标题: 测试通知\n内容: 这是一条模拟的通知消息\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  499. });

  500. // 模拟暂停按钮
  501. btnTestPause.setOnClickListener(function() {
  502.     logToAll("测试", "模拟暂停按钮点击");
  503.     safeSetText(tvBtnEventLog, "模拟暂停按钮点击\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  504. });

  505. // 模拟停止按钮
  506. btnTestStop.setOnClickListener(function() {
  507.     logToAll("测试", "模拟停止按钮点击");
  508.     safeSetText(tvBtnEventLog, "模拟停止按钮点击\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  509. });

  510. // 显示Toast
  511. btnShowToast.setOnClickListener(function() {
  512.     var toastMsg = "测试Toast消息 - " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date());
  513.     logToAll("测试", "显示Toast: " + toastMsg);
  514.     safeSetText(tvToastLog, "显示Toast: " + toastMsg);
  515.     // 实际显示Toast(使用兼容方式)
  516.     try {
  517.         // 尝试使用ui.toast方法
  518.         if (typeof ui !== 'undefined' && typeof ui.toast === 'function') {
  519.             ui.toast(toastMsg);
  520.         }
  521.         // 尝试使用toast.show方法
  522.         else if (typeof toast !== 'undefined' && typeof toast.show === 'function') {
  523.             toast.show(toastMsg);
  524.         }
  525.         // 如果以上方法都不可用,使用printl输出消息
  526.         else {
  527.             printl("Toast消息: " + toastMsg);
  528.         }
  529.     } catch (e) {
  530.         logToAll("错误", "显示Toast失败: " + e);
  531.         // 出错时使用printl作为备用方案
  532.         printl("Toast消息: " + toastMsg);
  533.     }
  534. });

  535. // 模拟热修复完成
  536. btnSimulateHotfix.setOnClickListener(function() {
  537.     logToAll("测试", "模拟热修复完成事件");
  538.     safeSetText(tvHotfixLog, "模拟热修复完成\n结果: 成功\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  539. });

  540. // 模拟脚本停止
  541. btnSimulateStop.setOnClickListener(function() {
  542.     logToAll("测试", "模拟脚本停止事件");
  543.     safeSetText(tvStopLog, "模拟脚本停止事件\n时间: " + new java.text.SimpleDateFormat("HH:mm:ss").format(new java.util.Date()));
  544. });

  545. // 初始化完成
  546. updateStatus("已启动");
  547. logToAll("系统", "事件监听示例已启动,所有监听器已设置完毕");

  548. console.log("✅ AIWROK事件监听示例已启动");
复制代码







欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) Powered by Discuz! X3.2