Options to connect to accessory

I have a client that creates iPhone accessories. They are well established and have been operating for years. They want to create an iOS companion app for their accessory that runs embedded Android.


My question is what are the various ways the app can communicate with the accessory? It looks like the only two possible options are WiFi and Bluetooth.


With WiFi I guess the accessory could act as a WiFi hotspot and the user would have to manually connect which would disconnect them, for example, from their home network. Is WiFi Direct a possibility here? Would it be an option if they joined the MFi program?


For BLE we know we can connect programmatically without involving the user.


For classic bluetooth it seems that you can connect using a profile supported by iOS (like HID) without joining the MFi program. If you wanted to use a custom profile then would you have to join MFi? Can RFCOMM/SPP be used? They are interested in RFCOMM/SPP because of BLE’s slow data transfer speeds. Would they have to join MFi to make use of it?


Thanks!

Accepted Answer

It looks like the only two possible options are WiFi and Bluetooth.

Also USB (but only for MFi accessories).

With WiFi I guess the accessory could act as a WiFi hotspot and the user would have to manually connect which would disconnect them, for example, from their home network. Is WiFi Direct a possibility here?

No. iOS does not support Wi-Fi Direct in any way, shape or form.

Would [Wi-Fi Direct] be an option if they joined the MFi program?

No.

On the Wi-Fi front the best option depends on the type of accessory. If the goal is to get the accessory on to the user’s existing Wi-Fi network (a good example of this might be a set of speakers intended for home use), Wireless Accessory Configuration is by far the best option.

On the other hand, if the accessory is typically used ‘in the field’,

NEHotspotConfigurationManager
might work well. In that case it’s good to pair Wi-Fi (for data transfer) and Bluetooth LE (for command and control).

You can learn more about iOS Wi-Fi management APIs in QA1942.

For classic bluetooth it seems that you can connect using a profile supported by iOS (like HID) without joining the MFi program. If you wanted to use a custom profile then would you have to join MFi?

For third-party developers classic Bluetooth in only available via:

  • A limited number of standard protocols, like HFP

  • An Apple-specific protocol that is available to MFi developers

The latter is accessed via the ExternalAccessory framework.

Finally, don’t forget HomeKit. There’s been a bunch of changes in that space recently, including a public spec and software-only authentication. If your accessory is typically used in the home, HomeKit is a great choice.

Given that you’re working on behalf of an existing commercial concern, my recommendation here is that you get in touch with the MFi folks. There’s a bunch of options here, many of which are only available to MFi licensees. That last point also puts a limit on how much we can discuss stuff here on the public DevForums.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Thanks Quinn! This was really thorough and helpful. This has really helped me and the client narrow down what our options are.

@Eskimo,


What is the technology used in SHAREit?


https://itunes.apple.com/pk/app/shareit-connect-transfer/id725215120?mt=8

I’m not able to comment on apps from other developer. You’ll have to work this out for yourself or ask the developer directly.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"
Options to connect to accessory
 
 
Q