iOS Uygulaması (Node)
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).
- Node yeteneklerini sunar: Canvas, Ekran anlık görüntüsü, Kamera yakalama, Konum, Talk mode, Voice wake.
node.invokekomutlarını alır ve node durum olaylarını bildirir.
Gereksinimler
- Başka bir cihazda çalışan Gateway (macOS, Linux veya WSL2 üzerinden Windows).
- Ağ yolu:
- Aynı LAN üzerinde Bonjour ile, veya
- Unicast DNS-SD ile tailnet üzerinden (örnek alan adı:
openclaw.internal.), veya - Manuel host/port (yedek).
Hızlı başlangıç (eşleştir + bağlan)
- Gateway’i başlatın:
- iOS uygulamasında Ayarlar’ı açın ve keşfedilmiş bir gateway seçin (veya Manuel Host’u etkinleştirip host/port girin).
- Gateway host’unda eşleştirme isteğini onaylayın:
requestId oluşturulur.
Onaylamadan önce openclaw devices list komutunu tekrar çalıştırın.
- Bağlantıyı doğrulayın:
Resmi derlemeler için relay destekli push
Resmi olarak dağıtılan iOS derlemeleri, ham APNs token’ını gateway’e yayınlamak yerine harici push relay kullanır. Gateway tarafı gereksinimi:- iOS uygulaması, App Attest ve uygulama makbuzunu kullanarak relay’e kaydolur.
- Relay, opak bir relay tanıtıcısı ve kayıt kapsamlı bir gönderim yetkisi 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 o 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 derlemesine gömülmüş relay URL’si ile eşleşmelidir.
- Uygulama daha sonra farklı bir gateway’e veya farklı relay temel URL’sine sahip bir derlemeye bağlanırsa, eski bağı yeniden kullanmak yerine relay kaydını yeniler.
- Dağıtım genelinde bir relay token’ı yok.
- Resmi/TestFlight relay destekli gönderimler için doğrudan APNs anahtarı yok.
- Resmi/TestFlight iOS derlemesini yükleyin.
- Gateway üzerinde
gateway.push.apns.relay.baseUrlayarlayın. - Uygulamayı gateway ile eşleştirin ve bağlantıyı tamamlamasına izin verin.
- Uygulama, APNs token’ına sahip olduktan, operatör oturumu bağlandıktan ve relay kaydı başarıyla tamamlandıktan sonra
push.apns.registerçağrısını otomatik olarak yayınlar. - 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 bir env geçersiz kılması olarak hâlâ çalışır.
Kimlik doğrulama ve güven akışı
Relay, resmi iOS derlemeleri için doğrudan gateway üzerinde APNs kullanımının sağlayamadığı iki kısıtı uygulamak için vardır:- Yalnızca Apple üzerinden dağıtılan gerçek OpenClaw iOS derlemeleri barındırılan relay’i kullanabilir.
- Bir gateway, yalnızca o belirli gateway ile eşleşmiş iOS cihazları için relay destekli push gönderebilir.
-
iOS app -> gateway- Uygulama önce normal Gateway auth akışı üzerinden gateway ile eşleşir.
- Bu, uygulamaya kimliği doğrulanmış bir node oturumu ile 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, bundle ID, App Attest kanıtı 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 derlemeleri tarafından kullanılmasını engelleyen şey budur. Yerel bir derleme imzalanmış olabilir, ancak relay’in beklediği resmi Apple dağıtım kanıtını sağlamaz.
-
gateway identity delegation- 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ı gönderim yetkisi döndürür.
- Relay kaydından önce uygulama, eşleştirilmiş gateway kimliğini
-
gateway -> relay- Gateway,
push.apns.registerçağrısından gelen relay tanıtıcısını ve gönderim yetkisini depolar. push.test, yeniden bağlanma uyandırmaları ve uyandırma dürtmelerinde gateway, gönderim isteğini kendi cihaz kimliği ile imzalar.- Relay, hem depolanan gönderim yetkisini hem de gateway imzasını, kayıt sırasındaki devredilmiş gateway kimliğine karşı doğrular.
- Başka bir gateway, bir şekilde tanıtıcıyı ele geçirse bile, bu depolanan kaydı yeniden kullanamaz.
- Gateway,
-
relay -> APNs- Relay, resmi derleme için üretim APNs kimlik bilgilerine ve ham APNs token’ına sahiptir.
- Gateway, relay destekli resmi derlemeler 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.
- Resmi derleme APNs ham token’larını gateway üzerinde depolamaktan kaçınmak.
- Barındırılan relay kullanımına yalnızca resmi/TestFlight OpenClaw derlemeleri için izin vermek.
- Bir gateway’in başka bir gateway’e ait iOS cihazlarına uyandırma push’u göndermesini engellemek.
apps/ios/fastlane/.env yalnızca
ASC_KEY_ID ve ASC_ISSUER_ID gibi App Store Connect / TestFlight auth bilgilerini depolar; yerel iOS derlemeleri için
doğrudan APNs teslimini yapılandırmaz.
Önerilen gateway host depolaması:
.p8 dosyasını commit etmeyin veya repo checkout’u altına koymayın.
Keşif yolları
Bonjour (LAN)
iOS uygulaması,local. üzerinde _openclaw-gw._tcp kaydını ve yapılandırılmışsa aynı
geniş alan DNS-SD keşif alanını tarar. Aynı LAN üzerindeki gateway’ler local. üzerinden otomatik 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 Bonjour belgesine bakın.
Manuel host/port
Ayarlar’da Manual Host seçeneğini etkinleştirin ve gateway host + port değerini girin (varsayılan18789).
Canvas + A2UI
iOS node, bir WKWebView canvas işler. Sürmek içinnode.invoke kullanın:
- Gateway canvas host,
/__openclaw__/canvas/ve/__openclaw__/a2ui/sunar. - Gateway HTTP sunucusundan sunulur (
gateway.portile aynı port, varsayılan18789). - iOS node, bir canvas host URL’si ilan edildiğinde bağlanırken otomatik olarak A2UI’ye gider.
canvas.navigateve{"url":""}ile yerleşik iskelete dönün.
Canvas eval / snapshot
Voice wake + Talk mode
- Voice wake ve Talk mode, 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 host URL’si ilan etmedi; Gateway configuration içindekicanvasHostdeğerini kontrol edin.- Eşleştirme istemi hiç görünmüyor:
openclaw devices listç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’ı temizlenmiş; node’u yeniden eşleştirin.