iOS Uygulaması (Düğüm)
Kullanılabilirlik: dahili önizleme. iOS uygulaması henüz herkese açık olarak dağıtılmıyor.Ne yapar
- Bir Gateway’e WebSocket üzerinden bağlanır (LAN veya tailnet).
- Düğüm yeteneklerini sunar: Canvas, Ekran anlık görüntüsü, Kamera yakalama, Konum, Konuşma modu, Sesle uyandırma.
node.invokekomutlarını alır ve düğüm durum olaylarını bildirir.
Gereksinimler
- Başka bir cihazda çalışan Gateway (macOS, Linux veya WSL2 üzerinden Windows).
- Ağ yolu:
- Aynı LAN üzerinde Bonjour üzerinden, veya
- Unicast DNS-SD üzerinden tailnet (örnek alan adı:
openclaw.internal.), veya - Manuel ana makine/port (yedek seçenek).
Hızlı başlangıç (eşleştir + bağlan)
- Gateway’i başlatın:
- iOS uygulamasında Ayarlar’ı açın ve keşfedilen bir gateway seçin (veya Manual Host’u etkinleştirip ana makine/port girin).
- Gateway ana makinesinde eşleştirme isteğini onaylayın:
requestId oluşturulur.
Onaylamadan önce openclaw devices list komutunu yeniden çalıştırın.
- Bağlantıyı doğrulayın:
Resmi yapılar için relay destekli push
Resmi olarak dağıtılan iOS yapıları, ham APNs token’ını gateway’e yayımlamak yerine harici push relay’i kullanır. Gateway tarafı gereksinimi:- iOS uygulaması, App Attest ve uygulama makbuzunu kullanarak relay’e kaydolur.
- Relay, opak bir relay tanıtıcısı ile kayıt kapsamlı bir gönderim izni döndürür.
- iOS uygulaması eşleştirilmiş gateway kimliğini alır ve bunu relay kaydına dahil eder; böylece relay destekli kayıt bu belirli gateway’e devredilir.
- Uygulama bu relay destekli kaydı
push.apns.registerile eşleştirilmiş gateway’e iletir. - Gateway,
push.test, arka plan uyandırmaları ve uyandırma dürtmeleri için depolanan bu relay tanıtıcısını kullanır. - Gateway relay temel URL’si, resmi/TestFlight iOS yapısına gömülü relay URL’siyle eşleşmelidir.
- Uygulama daha sonra farklı bir gateway’e veya farklı relay temel URL’sine sahip bir yapıya bağlanırsa, eski bağı yeniden kullanmak yerine relay kaydını yeniler.
- Dağıtım genelinde bir relay token’ı yoktur.
- Resmi/TestFlight relay destekli gönderimler için doğrudan APNs anahtarı yoktur.
- Resmi/TestFlight iOS yapısını yükleyin.
- Gateway üzerinde
gateway.push.apns.relay.baseUrldeğerini ayarlayın. - Uygulamayı gateway ile eşleştirin ve bağlanmayı tamamlamasına izin verin.
- Uygulama, APNs token’ına sahip olduktan, operatör oturumu bağlandıktan ve relay kaydı başarılı olduktan sonra
push.apns.registerişlemini otomatik olarak yayımlar. - Bundan sonra
push.test, yeniden bağlanma uyandırmaları ve uyandırma dürtmeleri depolanan relay destekli kaydı kullanabilir.
OPENCLAW_APNS_RELAY_BASE_URL, gateway için geçici ortam değişkeni geçersiz kılması olarak hâlâ çalışır.
Kimlik doğrulama ve güven akışı
Relay, resmi iOS yapıları için doğrudan gateway üzerinde APNs’in sağlayamadığı iki kısıtı uygulamak için vardır:- Yalnızca Apple üzerinden dağıtılan gerçek OpenClaw iOS yapıları barındırılan relay’i kullanabilir.
- Bir gateway, yalnızca o belirli gateway ile eşleştirilmiş iOS cihazları için relay destekli push gönderebilir.
-
iOS app -> gateway- Uygulama önce normal Gateway kimlik doğrulama akışı üzerinden gateway ile eşleştirilir.
- Bu, uygulamaya kimliği doğrulanmış bir düğüm oturumu ve kimliği doğrulanmış bir operatör oturumu verir.
- Operatör oturumu,
gateway.identity.getçağrısı için kullanılır.
-
iOS app -> relay- Uygulama, relay kayıt uç noktalarını HTTPS üzerinden çağırır.
- Kayıt, App Attest kanıtını ve uygulama makbuzunu içerir.
- Relay, paket kimliğini, App Attest kanıtını ve Apple makbuzunu doğrular ve resmi/üretim dağıtım yolunu zorunlu kılar.
- Barındırılan relay’in yerel Xcode/geliştirme yapılarınca kullanılmasını engelleyen şey budur. Yerel bir yapı imzalanmış olabilir, ancak relay’in beklediği resmi Apple dağıtım kanıtını sağlamaz.
-
gateway kimliği devri- Relay kaydından önce uygulama, eşleştirilmiş gateway kimliğini
gateway.identity.getüzerinden alır. - Uygulama bu gateway kimliğini relay kayıt yüküne dahil eder.
- Relay, bu gateway kimliğine devredilmiş bir relay tanıtıcısı ve kayıt kapsamlı bir gönderim izni döndürür.
- Relay kaydından önce uygulama, eşleştirilmiş gateway kimliğini
-
gateway -> relay- Gateway,
push.apns.registeriçindeki relay tanıtıcısını ve gönderim iznini depolar. push.test, yeniden bağlanma uyandırmaları ve uyandırma dürtmelerinde gateway, gönderim isteğini kendi cihaz kimliğiyle imzalar.- Relay, hem depolanan gönderim iznini hem de gateway imzasını, kayıttaki devredilmiş gateway kimliğine karşı doğrular.
- Başka bir gateway, tanıtıcıyı bir şekilde ele geçirse bile bu depolanan kaydı yeniden kullanamaz.
- Gateway,
-
relay -> APNs- Relay, resmi yapı için üretim APNs kimlik bilgilerine ve ham APNs token’ına sahiptir.
- Gateway, relay destekli resmi yapılar için ham APNs token’ını hiçbir zaman depolamaz.
- Relay, son push’u eşleştirilmiş gateway adına APNs’e gönderir.
- Üretim APNs kimlik bilgilerini kullanıcı gateway’lerinden uzak tutmak.
- Ham resmi yapı APNs token’larını gateway üzerinde depolamaktan kaçınmak.
- Barındırılan relay kullanımına yalnızca resmi/TestFlight OpenClaw yapılarında izin vermek.
- Bir gateway’in, farklı bir gateway’e ait iOS cihazlarına uyandırma push’ları göndermesini önlemek.
Keşif yolları
Bonjour (LAN)
iOS uygulaması,local. üzerinde _openclaw-gw._tcp kaydına göz atar ve yapılandırıldığında aynı
geniş alan DNS-SD keşif alanına da göz atar. Aynı LAN üzerindeki gateway’ler local. üzerinden otomatik olarak görünür;
ağlar arası keşif, beacon türünü değiştirmeden yapılandırılmış geniş alan alanını kullanabilir.
Tailnet (ağlar arası)
mDNS engellenmişse, bir unicast DNS-SD bölgesi kullanın (bir alan seçin; örnek:openclaw.internal.) ve Tailscale split DNS kullanın.
CoreDNS örneği için bkz. Bonjour.
Manuel ana makine/port
Ayarlar’da Manual Host seçeneğini etkinleştirin ve gateway ana makinesi + port girin (varsayılan18789).
Canvas + A2UI
iOS düğümü bir WKWebView canvas oluşturur. Bunu yönlendirmek içinnode.invoke kullanın:
- Gateway canvas ana makinesi
/__openclaw__/canvas/ve/__openclaw__/a2ui/yollarını sunar. - Gateway HTTP sunucusundan sunulur (gateway.port ile aynı port, varsayılan
18789). - iOS düğümü, bir canvas ana makinesi URL’si duyurulduğunda bağlanırken otomatik olarak A2UI’ye gider.
- Yerleşik iskeleye geri dönmek için
canvas.navigateve{"url":""}kullanın.
Canvas eval / anlık görüntü
Sesle uyandırma + konuşma modu
- Sesle uyandırma ve konuşma modu Ayarlar’da kullanılabilir.
- iOS arka plan sesini askıya alabilir; uygulama etkin değilken ses özelliklerini en iyi çaba olarak değerlendirin.
Yaygın hatalar
NODE_BACKGROUND_UNAVAILABLE: iOS uygulamasını ön plana getirin (canvas/kamera/ekran komutları bunu gerektirir).A2UI_HOST_NOT_CONFIGURED: Gateway bir canvas ana makinesi URL’si duyurmadı; Gateway configuration içindekicanvasHostdeğerini kontrol edin.- Eşleştirme istemi hiç görünmüyor:
openclaw devices listkomutunu çalıştırın ve manuel olarak onaylayın. - Yeniden yüklemeden sonra yeniden bağlanma başarısız oluyor: Keychain eşleştirme token’ı temizlendi; düğümü yeniden eşleştirin.