Environment:
- iOS 26.4 beta
- Xcode 26.4 beta
- Framework: AccessoryNotifications, AccessorySetupKit, AccessoryTransportExtension
Description:
I'm implementing notification forwarding to a custom BLE accessory using the new AccessoryNotifications framework in iOS 26.4. I've set up an AccessoryDataProvider extension following the documentation, but I'm unclear about how the data is actually transmitted to the BLE accessory.
Current Implementation:
- Main App - Uses AccessorySetupKit to discover and pair accessories:
let descriptor = ASDiscoveryDescriptor() descriptor.bluetoothServiceUUID = CBUUID(string: "FEE0")
let displayItem = ASPickerDisplayItem( name: "Notification Accessory", productImage: UIImage(systemName: "applewatch")!, descriptor: descriptor )
accessorySession.showPicker(for: [displayItem]) { error in // Handle error }
- AccessoryDataProvider Extension - Implements NotificationsForwarding.AccessoryNotificationsHandler:
@main struct AccessoryDataProvider: AccessoryTransportExtension.AccessoryDataProvider { @AppExtensionPoint.Bind static var boundExtensionPoint: AppExtensionPoint { Identifier("com.apple.accessory-data-provider") Implementing { AccessoryNotifications.NotificationsForwarding { NotificationHandler() } } } }
// NotificationHandler sends messages via: let message = AccessoryMessage { AccessoryMessage.Payload(transport: .bluetooth, data: data) } try await session?.sendMessage(message)
- Info.plist Configuration:
<key>EXExtensionPointIdentifier</key> <string>com.apple.accessory-data-provider</string> <key>NSAccessorySetupBluetoothServices</key> <array> <string>FEE0</string> </array>
Questions:
- What BLE Service and Characteristic should the accessory advertise?
- The documentation mentions specifying transport: .bluetooth, but doesn't explain what Service/Characteristic the accessory needs to implement to receive the
notification data. 2. How does AccessoryMessage with transport: .bluetooth actually transmit data? - Is there a specific Apple-defined BLE protocol? - Does the accessory need to run specific firmware or support a particular protocol stack? 3. Is there any documentation about the accessory-side implementation? - The iOS-side documentation is clear, but I couldn't find information about what the BLE peripheral needs to implement. 4. Is MFi certification required for the accessory? - The documentation doesn't explicitly mention MFi, but it's unclear if custom third-party accessories can use this framework.
Any guidance on how the BLE communication works under the hood would be greatly appreciated.