Chuyển đến nội dung chính

Ứng dụng iOS (Node)

Availability: internal preview. The iOS app is not publicly distributed yet.

Chức năng

  • Kết nối tới Gateway qua WebSocket (LAN hoặc tailnet).
  • Cung cấp các khả năng của node: Canvas, chụp màn hình, chụp camera, vị trí, chế độ nói, kích hoạt bằng giọng nói.
  • Nhận các lệnh node.invoke và báo cáo các sự kiện trạng thái của node.

Yêu cầu

  • Gateway chạy trên một thiết bị khác (macOS, Linux hoặc Windows qua WSL2).
  • Đường dẫn mạng:
    • Cùng LAN qua Bonjour, hoặc
    • Tailnet qua unicast DNS-SD (ví dụ domain: openclaw.internal.), hoặc
    • Nhập host/cổng thủ công (dự phòng).

Khởi động nhanh (ghép cặp + kết nối)

  1. Khởi động Gateway:
openclaw gateway --port 18789
  1. Trong ứng dụng iOS, mở Settings và chọn một gateway đã được phát hiện (hoặc bật Manual Host và nhập host/cổng).
  2. Phê duyệt yêu cầu ghép cặp trên máy chủ gateway:
openclaw nodes pending
openclaw nodes approve <requestId>
  1. Xác minh kết nối:
openclaw nodes status
openclaw gateway call node.list --params "{}"

Các cách khám phá

Bonjour (LAN)

The Gateway advertises _openclaw-gw._tcp on local.. The iOS app lists these automatically.

Tailnet (xuyên mạng)

Nếu mDNS bị chặn, hãy sử dụng một vùng DNS-SD unicast (chọn một domain; ví dụ: openclaw.internal.) và Tailscale split DNS. Xem Bonjour để biết ví dụ CoreDNS.

Host/cổng thủ công

Trong Settings, bật Manual Host và nhập host + cổng của gateway (mặc định 18789).

Canvas + A2UI

The iOS node renders a WKWebView canvas. Use node.invoke to drive it:
openclaw nodes invoke --node "iOS Node" --command canvas.navigate --params '{"url":"http://<gateway-host>:18793/__openclaw__/canvas/"}'
Ghi chú:
  • Máy chủ canvas của Gateway phục vụ /__openclaw__/canvas//__openclaw__/a2ui/.
  • Node iOS tự động điều hướng tới A2UI khi kết nối nếu có quảng bá URL máy chủ canvas.
  • Quay lại scaffold tích hợp sẵn bằng canvas.navigate{"url":""}.
  • Quay lại scaffold tích hợp sẵn bằng canvas.navigate{"url":""}.

Canvas eval / snapshot

openclaw nodes invoke --node "iOS Node" --command canvas.eval --params '{"javaScript":"(() => { const {ctx} = window.__openclaw; ctx.clearRect(0,0,innerWidth,innerHeight); ctx.lineWidth=6; ctx.strokeStyle=\"#ff2d55\"; ctx.beginPath(); ctx.moveTo(40,40); ctx.lineTo(innerWidth-40, innerHeight-40); ctx.stroke(); return \"ok\"; })()"}'
openclaw nodes invoke --node "iOS Node" --command canvas.snapshot --params '{"maxWidth":900,"format":"jpeg"}'

Kích hoạt bằng giọng nói + chế độ nói

  • Kích hoạt bằng giọng nói và chế độ nói có sẵn trong Settings.
  • iOS có thể tạm dừng âm thanh nền; hãy coi các tính năng giọng nói là best-effort khi ứng dụng không ở trạng thái hoạt động.

Lỗi thường gặp

  • NODE_BACKGROUND_UNAVAILABLE: đưa ứng dụng iOS lên foreground (các lệnh canvas/camera/màn hình yêu cầu điều này).
  • A2UI_HOST_NOT_CONFIGURED: Gateway không quảng bá URL máy chủ canvas; kiểm tra canvasHost trong Cấu hình Gateway.
  • Không thấy lời nhắc ghép cặp: chạy openclaw nodes pending và phê duyệt thủ công.
  • Kết nối lại thất bại sau khi cài lại: token ghép cặp trong Keychain đã bị xóa; hãy ghép cặp lại node.

Tài liệu liên quan