My research suggests that the preferred MFi approach is to use Wi-Fi Accessory Configuration …
That depends on the expected deployment scenario for your accessory. In my experience this breaks downs into two cases:
You have an accessory, like a set of speakers, that you expect to be deployed in some static location that has infrastructure Wi-Fi (A)
You have an accessory, like a fancy video camera, where the user often wants to talk to the accessory where there’s no infrastructure Wi-Fi (B)
WAC is a massive win for case A and you should definitely do it in that case. For case B, however, the situation is more nuanced. Depending in the details a solution based on
NEHotspotConfigurationManager
might be just fine.
One option for B is to use both Core Bluetooth (Bluetooth LE) and
NEHotspotConfigurationManager
. Your app can then use Core Bluetooth to get minimal information about the accessory (like its SSID) and then use
NEHotspotConfigurationManager
to join the accessory’s network when it needs to do a high-speed transfer.
Once you get both the device and the accessory on the same Wi-Fi you need to think about how to run the communication. Here I strongly recommend Bonjour technologies:
Keep in mind that RFC 3927 is only necessary if you’re stuck on legacy IP. IPv6 supports link-local addressing out of the box, and it’s a big win for accessory integration because there’s no way to ‘break’ that link-local support.
Share and Enjoy
—
Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"