getting-started

tarafından facebook

SDK kurulumu, Swift Package Manager entegrasyonu, Info.plist yapılandırması ve Meta gözlüklere ilk bağlantı

npx skills add https://github.com/facebook/meta-wearables-dat-ios --skill getting-started

Getting Started with DAT SDK (iOS)

Set up the Meta Wearables Device Access Toolkit in an iOS app.

Prerequisites

  • Xcode 26.4+, Swift 6.3+, iOS 17.2+ deployment target — this matches the public CameraAccess and DisplayAccess sample apps
  • Meta AI companion app installed on test device
  • Ray-Ban Meta glasses or Meta Ray-Ban Display glasses (or use MockDeviceKit for development)
  • Developer Mode enabled in Meta AI app (Settings > Your glasses > Developer Mode)

Step 1: Add the SDK via Swift Package Manager

  1. In Xcode, select File > Add Package Dependencies...
  2. Enter https://github.com/facebook/meta-wearables-dat-ios
  3. Select a version
  4. Add MWDATCore and MWDATCamera to your target

Step 2: Configure Info.plist

Add these required entries to your Info.plist:

<!-- URL scheme for Meta AI callbacks -->
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLName</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>myexampleapp</string>
    </array>
  </dict>
</array>

<!-- DAT configuration -->
<key>MWDAT</key>
<dict>
  <key>AppLinkURLScheme</key>
  <string>myexampleapp://</string>
  <key>MetaAppID</key>
  <string>$(META_APP_ID)</string>
  <key>ClientToken</key>
  <string>$(CLIENT_TOKEN)</string>
  <key>TeamID</key>
  <string>$(DEVELOPMENT_TEAM)</string>
</dict>

<!-- Background modes and transport permissions -->
<key>UIBackgroundModes</key>
<array>
  <string>processing</string>
  <string>bluetooth-central</string>
  <string>bluetooth-peripheral</string>
  <string>external-accessory</string>
</array>
<key>UISupportedExternalAccessoryProtocols</key>
<array>
  <string>com.meta.ar.wearable</string>
</array>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Needed to connect to Meta AI Glasses</string>
<key>NSLocalNetworkUsageDescription</key>
<string>This lets your phone find and connect to your glasses over Wi-Fi.</string>
<key>NSBonjourServices</key>
<array>
  <string>_bonjour._tcp</string>
</array>

Replace myexampleapp with your app's URL scheme and keep MWDAT > AppLinkURLScheme in sync with it — the SDK sends that scheme to Meta AI so it can call your app back.

MetaAppID, ClientToken, and TeamID come from build settings in the sample apps. With Developer Mode you can leave MetaAppID empty, set it to 0, or leave the $(META_APP_ID) placeholder unexpanded; the SDK treats all three as "no app ID" and skips attestation. For production, set MetaAppID and ClientToken from your app in the Wearables Developer Center and set TeamID to your Apple Developer Team ID (Xcode > Signing & Capabilities).

The SDK moves traffic over more than one link type and checks Info.plist before it can use each one, so declare all of them:

LinkRequired Info.plist entries
Bluetooth LEbluetooth-central and bluetooth-peripheral background modes, NSBluetoothAlwaysUsageDescription
Bluetooth Classic (used by camera streaming)external-accessory background mode, UISupportedExternalAccessoryProtocols containing com.meta.ar.wearable
Wi-Fi (high bandwidth)non-empty NSLocalNetworkUsageDescription, NSBonjourServices with _bonjour._tcp

Only add the audio background mode and NSMicrophoneUsageDescription if you record glasses-microphone audio, as CameraAccess does.

Step 3: Initialize the SDK

Call Wearables.configure() once at app launch:

import MWDATCore

@main
struct MyApp: App {
    init() {
        do {
            try Wearables.configure()
        } catch {
            assertionFailure("Failed to configure Wearables SDK: \(error)")
        }
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Step 4: Handle URL callbacks

Your app must handle the URL callback from Meta AI after registration and permission flows. Both sample apps filter on the metaWearablesAction query item so unrelated deep links are not forwarded to the SDK:

.onOpenURL { url in
    guard
        let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
        components.queryItems?.contains(where: { $0.name == "metaWearablesAction" }) == true
    else {
        return
    }
    Task {
        do {
            _ = try await Wearables.shared.handleUrl(url)
        } catch {
            // Surface the failure; `handleUrl` throws `WearablesHandleURLError`
        }
    }
}

Step 5: Register with Meta AI

func startRegistration() async throws {
    try await Wearables.shared.startRegistration()
}

Observe registration state:

Task {
    for await state in Wearables.shared.registrationStateStream() {
        // Update UI based on registration state
    }
}

Step 6: Start streaming

import MWDATCore
import MWDATCamera

// Create a DeviceSession — device selection is configured here
let wearables = Wearables.shared
let deviceSelector = AutoDeviceSelector(wearables: wearables)
let deviceSession = try wearables.createSession(deviceSelector: deviceSelector)
try deviceSession.start()

// Wait for the device session to reach the started state
for await state in deviceSession.stateStream() {
    if state == .started { break }
}

let config = StreamConfiguration(
    videoCodec: .raw,
    resolution: .low,
    frameRate: 24
)
guard let camera = try deviceSession.addCamera(config: config) else {
    return
}
let stream = camera.stream

// Observe frames
let frameToken = stream.videoFramePublisher.listen { frame in
    guard let image = frame.makeUIImage() else { return }
    Task { @MainActor in
        self.currentFrame = image
    }
}

// Start the stream capability
stream.start()

Next steps

facebook tarafından daha fazla skill

gc-safe-coding
facebook
Tam açıklama ve gerekçe için doc/GCSafeCoding.md dosyasına bakın.
app-review-prep
facebook
Meta uygulamasını App Review için hazırlayın — mevcut durumu, bekleyen gereksinimleri, verilen ayrıcalıkları ve gönderim geçmişini kontrol eder. Bir uygulama göndermeden önce kullanın…
api-health
facebook
Bir Meta uygulaması için API sağlığını izleyin — hız sınırlarını, çağrı hacmini ve API kullanımdan kaldırmalarını kontrol edin. Azaltmayı teşhis etmek, kapasite planlamak veya API sürümüne hazırlanmak için kullanın…
debug-webhooks
facebook
Meta uygulaması için webhook sorunlarını giderin — aktif abonelikleri inceleyin, yanlış yapılandırmayı tespit edin ve teslimatı doğrulamak için test yükleri gönderin. Şu durumlarda kullanın…
api-integration
facebook
Bir geliştiriciyi sıfırdan Meta API entegrasyonu kurma konusunda yönlendirir — doğru API'leri keşfeder, kurulum kılavuzlarını getirir, kimlik doğrulama gereksinimlerini kontrol eder,…
webhook-setup
facebook
Bir Meta uygulaması için webhook'ları uçtan uca kurun — mevcut konuları keşfedin, alanlara abone olun ve bir test payload'ı ile doğrulayın. Webhook yapılandırırken kullanın…
test-ui
facebook
Test UI sistemini (PanelUI, ScreenSpace) poke örneğine karşı iwsdk CLI kullanarak test edin.
flags
facebook
React sürüm kanalları arasında özellik bayrağı durumlarını inceleyin ve karşılaştırın. Tüm bayrakları kanallar arasında (www, www-modern, canary, next, experimental, rn varyantları) görüntüleyin veya --diff ile belirli kanalları karşılaştırın. Çıktı biçimleri varsayılan tablo görünümü, CSV dışa aktarma ve temizlik durumu gruplandırmasını içerir. Bayrak durumları sembollerle gösterilir: etkin (✅), devre dışı (❌), varyant testi (🧪), yalnızca profil oluşturma (📊). Yaygın tuzak: __VARIANT__ bayrakları www üzerinde her iki durumda da test edilir; anlamlı farklılı