audio-streaming
Receive synchronized PCM audio frames through a Camera stream on iOS
App registration with Meta AI, camera permission flows
$ npx -y skills add facebook/meta-wearables-dat-ios --skill permissions-registration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/permissions-registrationContext preview
The summary Claude sees to decide when to auto-load this skill.
App registration with Meta AI, camera permission flows
name: permissions-registration description: App registration with Meta AI, camera permission flows
Register your app with Meta AI, then request the device permissions it needs.
The DAT SDK separates two concepts: 1. **Registration** — Your app registers with Meta AI to become a permitted integration 2. **Device permissions** — After registration, request specific device permissions (e.g., camera)
All permission grants occur through the Meta AI companion app.
func startRegistration() async throws {
try await Wearables.shared.startRegistration()
}This opens the Meta AI app where the user approves your app. Meta AI then calls back via your URL scheme.
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 let error as RegistrationError {
showError(error.description)
} catch {
showError(error.localizedDescription)
}
}
}Task {
for await state in Wearables.shared.registrationStateStream() {
switch state {
case .registered:
// App is registered, can request permissions
case .unavailable:
// Registration is unavailable
case .available:
// Ready to register
case .registering:
// Registration in progress
}
}
}func startUnregistration() async throws {
try await Wearables.shared.startUnregistration()
}let status = try await Wearables.shared.checkPermissionStatus(.camera)
let status = try await Wearables.shared.requestPermission(.camera)
The SDK opens Meta AI for the user to grant access. Users can choose:
Users can link multiple glasses to Meta AI. The SDK handles this transparently:
Registration and permission APIs use typed throws. Prefer `error.description` or `error.localizedDescription` over your own error strings:
When a device reports `compatibility() == .deviceUpdateRequired`, offer a firmware update. When session start reports `DeviceSessionError.datAppOnTheGlassesUpdateRequired`, offer the glasses app update. Both open Meta AI:
try await Wearables.shared.openFirmwareUpdate() try await Wearables.shared.openDATGlassesAppUpdate()
| Mode | Registration behavior | |------|----------------------| | Developer Mode | Registration always allowed. `MetaAppID` is empty, `0`, or an unexpanded `$(META_APP_ID)` placeholder, so the SDK skips attestation | | Production | `MetaAppID`, `ClientToken`, and `TeamID` must all be set, and users must be in the proper release channel |
For production, get your app ID and client token from the [Wearables Developer Center](https://wearables.developer.meta.com/), and use your Apple Developer Team ID for `TeamID`.
The Meta Wearables Device Access Toolkit enables developers to utilize Meta's AI glasses to build hands-free wearable experiences into their mobile applications.
Receive synchronized PCM audio frames through a Camera stream on iOS
Capture standalone high-quality photos from connected glasses on iOS
Stream, video frames, photo capture, resolution/frame rate configuration
Swift patterns, async/await, naming conventions, key types for DAT SDK iOS development
Use the Wearables DAT MCP server for live DAT documentation search with `search_dat_docs`,…