Skip to content
Mobile
Skill

/permissions-registration

App registration with Meta AI, camera permission flows

BOOST
From plugin
meta-wearables-dat-ios
56817 skills
Install
$ npx -y skills add facebook/meta-wearables-dat-ios --skill permissions-registration --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/permissions-registration

Context preview

The summary Claude sees to decide when to auto-load this skill.

App registration with Meta AI, camera permission flows

SKILL.md

permissions-registration.SKILL.md
name: permissions-registration
description: App registration with Meta AI, camera permission flows

Permissions & Registration (iOS)

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.

Registration flow

Start registration

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.

Handle the callback

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)
        }
    }
}

Observe registration state

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
        }
    }
}

Unregister

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

Camera permissions

Check permission status

let status = try await Wearables.shared.checkPermissionStatus(.camera)

Request permission

let status = try await Wearables.shared.requestPermission(.camera)

The SDK opens Meta AI for the user to grant access. Users can choose:

  • **Allow once** — temporary, single-session grant
  • **Allow always** — persistent grant

Multi-device behavior

Users can link multiple glasses to Meta AI. The SDK handles this transparently:

  • Permission granted on **any** linked device means your app has access
  • You don't need to track which device has permissions
  • If all devices disconnect, permissions become unavailable

Typed errors

Registration and permission APIs use typed throws. Prefer `error.description` or `error.localizedDescription` over your own error strings:

  • `startRegistration()` throws `RegistrationError`: `.alreadyRegistered`, `.configurationInvalid`, `.metaAINotInstalled`, `.networkUnavailable`, `.unknown`
  • `startUnregistration()` throws `UnregistrationError`: `.alreadyUnregistered`, `.configurationInvalid`, `.metaAINotInstalled`, `.unknown`
  • `handleUrl(_:)` throws `WearablesHandleURLError`: `.registrationError`, `.unregistrationError`
  • `checkPermissionStatus(_:)` and `requestPermission(_:)` throw `PermissionError`: `.noDevice`, `.noDeviceWithConnection`, `.connectionError`, `.metaAINotInstalled`, `.requestInProgress`, `.requestTimeout`, `.internalError`
  • `openFirmwareUpdate()` and `openDATGlassesAppUpdate()` throw `NavigationError`: `.metaAINotInstalled`, `.notRegistered`

Update flows

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()

Developer Mode vs Production

| 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`.

Prerequisites

  • Registration requires an internet connection
  • Meta AI companion app must be installed
  • For Developer Mode: enable in Meta AI > Settings > Your glasses > Developer Mode

Links

  • [Permissions documentation](https://wearables.developer.meta.com/docs/permissions-requests)
  • [Getting started guide](https://wearables.developer.meta.com/docs/getting-started-toolkit)
  • [Manage projects](https://wearables.developer.meta.com/docs/manage-projects)
Read more
Ships withmeta-wearables-dat-ios

The Meta Wearables Device Access Toolkit enables developers to utilize Meta's AI glasses to build hands-free wearable experiences into their mobile applications.

Get the whole plugin
Stats
568
Stars
126
Forks
Active
Maintenance
Shell
Language
6d ago
Last commit
10mo ago
Created
5h ago
Added

Repo: facebook/meta-wearables-dat-ios

Other skills on meta-wearables-dat-ios.