Tình trạng: bản xem trước nội bộ. Ứng dụng iOS chưa được phân phối công khai.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
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, ảnh chụp màn hình, chụp Camera, Vị trí, chế độ Talk, đánh thức bằng giọng nói.
- Nhận lệnh
node.invokevà báo cáo các sự kiện trạng thái Node.
Yêu cầu
- Gateway đang chạy trên một thiết bị khác (macOS, Linux hoặc Windows qua WSL2).
- Đường mạng:
- Cùng LAN qua Bonjour, hoặc
- Tailnet qua unicast DNS-SD (miền ví dụ:
openclaw.internal.), hoặc - Máy chủ/cổng thủ công (dự phòng).
Bắt đầu nhanh (ghép nối + kết nối)
- Khởi động Gateway:
- Trong ứng dụng iOS, mở Cài đặt và chọn một Gateway đã được phát hiện (hoặc bật Máy chủ thủ công và nhập máy chủ/cổng).
- Phê duyệt yêu cầu ghép nối trên máy chủ Gateway:
requestId mới được tạo.
Chạy lại openclaw devices list trước khi phê duyệt.
Tùy chọn: nếu Node iOS luôn kết nối từ một subnet được kiểm soát chặt chẽ, bạn
có thể chọn tự động phê duyệt Node lần đầu bằng CIDR tường minh hoặc IP chính xác:
role: node mới
không yêu cầu phạm vi. Ghép nối operator/trình duyệt và mọi thay đổi về vai trò, phạm vi, siêu dữ liệu hoặc
khóa công khai vẫn cần phê duyệt thủ công.
- Xác minh kết nối:
Push dựa trên relay cho bản dựng chính thức
Các bản dựng iOS được phân phối chính thức dùng relay push bên ngoài thay vì công bố token APNs thô cho Gateway. Yêu cầu phía Gateway:- Ứng dụng iOS đăng ký với relay bằng App Attest và JWS giao dịch ứng dụng StoreKit.
- Relay trả về một định danh relay mờ cùng quyền gửi giới hạn theo đăng ký.
- Ứng dụng iOS lấy danh tính Gateway đã ghép nối và đưa nó vào đăng ký relay, vì vậy đăng ký dựa trên relay được ủy quyền cho Gateway cụ thể đó.
- Ứng dụng chuyển tiếp đăng ký dựa trên relay đó tới Gateway đã ghép nối bằng
push.apns.register. - Gateway dùng định danh relay đã lưu đó cho
push.test, đánh thức nền và nhắc đánh thức. - URL cơ sở relay của Gateway phải khớp với URL relay được nhúng trong bản dựng iOS chính thức/TestFlight.
- Nếu sau đó ứng dụng kết nối tới Gateway khác hoặc một bản dựng có URL cơ sở relay khác, nó sẽ làm mới đăng ký relay thay vì tái sử dụng liên kết cũ.
- Không cần token relay dùng chung cho toàn bộ triển khai.
- Không cần khóa APNs trực tiếp cho các lượt gửi dựa trên relay của bản chính thức/TestFlight.
- Cài đặt bản dựng iOS chính thức/TestFlight.
- Đặt
gateway.push.apns.relay.baseUrltrên Gateway. - Ghép nối ứng dụng với Gateway và để ứng dụng hoàn tất kết nối.
- Ứng dụng tự động công bố
push.apns.registersau khi có token APNs, phiên operator đã kết nối và đăng ký relay thành công. - Sau đó,
push.test, đánh thức kết nối lại và nhắc đánh thức có thể dùng đăng ký dựa trên relay đã lưu.
Tín hiệu alive trong nền
Khi iOS đánh thức ứng dụng bằng silent push, làm mới nền hoặc sự kiện vị trí quan trọng, ứng dụng thử kết nối lại Node trong thời gian ngắn rồi gọinode.event với event: "node.presence.alive".
Gateway ghi lại điều này dưới dạng lastSeenAtMs/lastSeenReason trong siêu dữ liệu Node/thiết bị đã ghép nối chỉ
sau khi danh tính thiết bị Node đã xác thực được biết.
Ứng dụng chỉ xem một lần đánh thức nền là đã được ghi nhận thành công khi phản hồi từ Gateway bao gồm
handled: true. Các Gateway cũ hơn có thể xác nhận node.event bằng { "ok": true }; phản hồi đó
tương thích nhưng không được tính là cập nhật lần thấy gần nhất bền vững.
Ghi chú tương thích:
OPENCLAW_APNS_RELAY_BASE_URLvẫn hoạt động như một biến môi trường ghi đè tạm thời cho Gateway.
Luồng xác thực và tin cậy
Relay tồn tại để thực thi hai ràng buộc mà APNs trực tiếp trên Gateway không thể cung cấp cho các bản dựng iOS chính thức:- Chỉ các bản dựng iOS OpenClaw chính hãng được phân phối qua Apple mới có thể dùng relay lưu trữ.
- Một Gateway chỉ có thể gửi push dựa trên relay cho các thiết bị iOS đã ghép nối với chính Gateway đó.
-
iOS app -> gateway- Ứng dụng trước tiên ghép nối với Gateway qua luồng xác thực Gateway thông thường.
- Việc đó cấp cho ứng dụng một phiên Node đã xác thực cùng một phiên operator đã xác thực.
- Phiên operator được dùng để gọi
gateway.identity.get.
-
iOS app -> relay- Ứng dụng gọi các endpoint đăng ký relay qua HTTPS.
- Đăng ký bao gồm bằng chứng App Attest cùng một JWS giao dịch ứng dụng StoreKit.
- Relay xác thực ID gói, bằng chứng App Attest và bằng chứng phân phối Apple, đồng thời yêu cầu đường dẫn phân phối chính thức/sản xuất.
- Đây là cơ chế chặn các bản dựng Xcode/dev cục bộ dùng relay lưu trữ. Một bản dựng cục bộ có thể được ký, nhưng nó không đáp ứng bằng chứng phân phối Apple chính thức mà relay mong đợi.
-
gateway identity delegation- Trước khi đăng ký relay, ứng dụng lấy danh tính Gateway đã ghép nối từ
gateway.identity.get. - Ứng dụng đưa danh tính Gateway đó vào payload đăng ký relay.
- Relay trả về một định danh relay và một quyền gửi giới hạn theo đăng ký được ủy quyền cho danh tính Gateway đó.
- Trước khi đăng ký relay, ứng dụng lấy danh tính Gateway đã ghép nối từ
-
gateway -> relay- Gateway lưu định danh relay và quyền gửi từ
push.apns.register. - Khi
push.test, đánh thức kết nối lại và nhắc đánh thức, Gateway ký yêu cầu gửi bằng danh tính thiết bị của chính nó. - Relay xác minh cả quyền gửi đã lưu và chữ ký Gateway đối chiếu với danh tính Gateway được ủy quyền từ đăng ký.
- Gateway khác không thể tái sử dụng đăng ký đã lưu đó, ngay cả khi bằng cách nào đó lấy được định danh.
- Gateway lưu định danh relay và quyền gửi từ
-
relay -> APNs- Relay sở hữu thông tin xác thực APNs sản xuất và token APNs thô cho bản dựng chính thức.
- Gateway không bao giờ lưu token APNs thô cho các bản dựng chính thức dựa trên relay.
- Relay gửi push cuối cùng tới APNs thay mặt Gateway đã ghép nối.
- Để giữ thông tin xác thực APNs sản xuất khỏi các Gateway của người dùng.
- Để tránh lưu token APNs thô của bản dựng chính thức trên Gateway.
- Để chỉ cho phép dùng relay lưu trữ với các bản dựng OpenClaw chính thức/TestFlight.
- Để ngăn một Gateway gửi push đánh thức tới thiết bị iOS thuộc một Gateway khác.
apps/ios/fastlane/.env chỉ lưu
xác thực App Store Connect / TestFlight như ASC_KEY_ID và ASC_ISSUER_ID; nó không cấu hình
phân phối APNs trực tiếp cho các bản dựng iOS cục bộ.
Lưu trữ khuyến nghị trên máy chủ Gateway:
.p8 hoặc đặt nó trong checkout repo.
Đường dẫn phát hiện
Bonjour (LAN)
Ứng dụng iOS duyệt_openclaw-gw._tcp trên local. và, khi được cấu hình, cùng
miền phát hiện DNS-SD diện rộng. Các Gateway cùng LAN tự động xuất hiện từ local.;
phát hiện xuyên mạng có thể dùng miền diện rộng đã cấu hình mà không cần thay đổi loại beacon.
Tailnet (xuyên mạng)
Nếu mDNS bị chặn, hãy dùng một vùng unicast DNS-SD (chọn một miền; ví dụ:openclaw.internal.) và Tailscale split DNS.
Xem Bonjour để biết ví dụ CoreDNS.
Máy chủ/cổng thủ công
Trong Cài đặt, bật Máy chủ thủ công và nhập máy chủ Gateway + cổng (mặc định18789).
Canvas + A2UI
Node iOS hiển thị canvas WKWebView. Dùngnode.invoke để điều khiển nó:
- Máy chủ canvas của Gateway phục vụ
/__openclaw__/canvas/và/__openclaw__/a2ui/. - Nó được phục vụ từ máy chủ HTTP của Gateway (cùng cổng với
gateway.port, mặc định18789). - Node iOS tự động điều hướng tới A2UI khi kết nối nếu URL máy chủ canvas được quảng bá.
- Quay lại scaffold tích hợp bằng
canvas.navigatevà{"url":""}.
Quan hệ với Computer Use
Ứng dụng iOS là một bề mặt Node di động, không phải backend Codex Computer Use. Codex Computer Use vàcua-driver mcp điều khiển một desktop macOS cục bộ qua công cụ MCP;
ứng dụng iOS cung cấp các khả năng iPhone qua lệnh Node OpenClaw
như canvas.*, camera.*, screen.*, location.* và talk.*.
Agent vẫn có thể vận hành ứng dụng iOS qua OpenClaw bằng cách gọi lệnh Node,
nhưng các lời gọi đó đi qua giao thức Node của Gateway và tuân theo giới hạn tiền cảnh/nền của iOS.
Dùng Codex Computer Use
để điều khiển desktop cục bộ và dùng trang này cho các khả năng Node iOS.
Eval / ảnh chụp Canvas
Đánh thức bằng giọng nói + chế độ Talk
- Đánh thức bằng giọng nói và chế độ Talk có trong Cài đặt.
- iOS có thể tạm dừng âm thanh nền; hãy xem các tính năng giọng nói là nỗ lực tốt nhất khi ứng dụng không hoạt động.
Lỗi thường gặp
NODE_BACKGROUND_UNAVAILABLE: đưa ứng dụng iOS ra tiền cảnh (các lệnh canvas/camera/screen 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 tracanvasHosttrong cấu hình Gateway.- Lời nhắc ghép nối không bao giờ xuất hiện: chạy
openclaw devices listvà phê duyệt thủ công. - Kết nối lại thất bại sau khi cài đặt lại: token ghép nối Keychain đã bị xóa; hãy ghép nối lại Node.