Integrate third-party audio accessories with Apple audio switching and spatial placement using AudioAccessoryKit. Use when configuring AccessoryControlDevice, handling device capabilities, monitoring accessory placement, or participating in automatic audio routing.
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Participate in Apple's seamless audio ecosystem, automatic audio routing, and head/ear placement detection for third-party audio accessories. Targets Swift 6.4 / iOS 26+.
Prerequisite: Audio accessories must be paired and authorized via
AccessorySetupKitbefore configuring withAudioAccessoryKit.
AudioAccessoryKit bridges authorized Bluetooth accessories into iOS system audio management:
AccessorySetupKit.AccessoryControlDevice.Register an AccessoryControlDevice for an authorized accessory:
import AudioAccessoryKit
import AccessorySetupKit
func configureAudioAccessory(accessory: ASAccessory) async throws {
guard let btIdentifier = accessory.bluetoothIdentifier else { return }
var config = AccessoryControlDevice.Configuration()
config.capabilities = [.earDetection, .noiseControl, .spatialAudio]
let device = try await AccessoryControlDevice.register(
identifier: btIdentifier,
configuration: config
)
}Configure active hardware capabilities and audio listening modes:
var capabilities = AccessoryControlDevice.Capabilities()
capabilities.insert(.noiseControl)
capabilities.insert(.spatialAudio)
// Update listening mode
func setListeningMode(_ mode: AccessoryControlDevice.ListeningMode, on device: AccessoryControlDevice) async throws {
try await device.updateListeningMode(mode)
}Report hardware placement transitions (e.g. user inserts earbud) to trigger automatic audio switching:
func reportEarPlacement(inEar: Bool, device: AccessoryControlDevice) async throws {
let placement: AccessoryControlDevice.Placement = inEar ? .inEar : .outOfEar
try await device.updatePlacement(placement)
}When earbuds are placed in-ear, iOS automatically activates the audio route if automatic switching is enabled by the user in Settings.
ASAccessorySession first.Configuration.capabilities.AccessorySetupKit before registrationAccessoryControlDevice.Configuration accurately declares hardware capabilitiesthienqo/ios-skills
6bf8b62
Canonical home
since May 23, 2026
Also appears in
on Oct 29, 2026
since May 22, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.