AccessorySetupKit for privacy-preserving discovery and setup of Bluetooth, Wi-Fi, or Wi-Fi Aware accessories. Use for discovery sessions, picker-based authorization, migration, accessory renaming or removal, custom filtering, and required Info.plist declarations.
AccessorySetupKit for privacy-preserving discovery and setup of Bluetooth, Wi-Fi, or Wi-Fi Aware accessories. Use for discovery sessions, picker-based authorization, migration, accessory renaming or removal, custom filtering, and required Info.plist declarations.
AccessorySetupKit
What to open
Use accessory-setup-kit/accessorysetupkit.md for all API details and key names.
Use accessory-setup-kit/AccessorySetupKitEverythingBLEDevelopersNeedToKnow.md for BLE-specific behavior notes and real-world details.
Search within it for: "Discovering and configuring accessories", ASAccessorySession, ASDiscoveryDescriptor, ASPickerDisplayItem, ASMigrationDisplayItem, ASPickerDisplaySettings, and ASAccessoryEventType.
Workflow
Identify whether the accessory uses Bluetooth, Wi-Fi, or Wi-Fi Aware and set up matching discovery properties.
Declare required Info.plist keys for AccessorySetupKit and any Bluetooth identifiers.
Create and activate ASAccessorySession, then handle events on the provided queue.
Present a picker with ASPickerDisplayItem items that match the accessories you support.
Handle .accessoryAdded to connect to the selected device; handle .accessoryRemoved and .accessoryChanged as needed.
Picker guidance
A display item must include a descriptor with a Bluetooth identifier or Wi-Fi SSID/SSID prefix.
For Bluetooth filters, provide at least a service UUID or company identifier, and optionally a name substring or manufacturer/service data mask pair.
To do custom filtering, enable filterDiscoveryResults and handle .accessoryDiscovered by creating ASDiscoveredDisplayItem entries, then call updatePicker(showing:completionHandler:).
If custom filtering needs unlimited time, set discoveryTimeout = .unbounded and finish discovery with finishPickerDiscovery(completionHandler:).
Migration and post-setup
Use ASMigrationDisplayItem to migrate previously-configured accessories into AccessorySetupKit.
Use setup and rename options on picker items when the user should rename or finish setup in-app.
Reminders
Keep discovery descriptors specific to avoid broad Bluetooth access.
For Wi-Fi Aware, set Wi-Fi Aware properties on ASDiscoveryDescriptor before discovery.
Use the session event stream to keep app state in sync with user actions.