Showing nearby WiFi devices in your application

We are working on a hardware device which will be used as a standalone device with only a wifi connection for servicing.

We would like to show all nearby devices in our service application running on iOS and allow the service engineer to connect to it from within the application (so without leaving the application)

As I understand correctly the only way this can be done is supporting the Wireless Accessory Configuration (WAC) by joining the MFi program.

Before making our hardware MFi ready I would like to know if my assumptions are correct and there is no alternative API which can be used instead.

thanks in advance for your answers, Niels

First up, read TN3111 iOS Wi-Fi API overview, ’cause I’m going to assume its terminology.

As I understand correctly the only way this can be done is supporting the Wireless Accessory Configuration (WAC) by joining the MFi program.

Perhaps. The goal with WAC is to get an accessory on to the same network as the iOS device. For example, if you have a Wi-Fi enabled waffle maker and you want to make it easy for the user to get that on to their home network, WAC is perfect.

However, you wrote:

We are working on a hardware device which will be used as a standalone device with only a wifi connection for servicing.

which suggests that’s not the case. Is that right?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Thanks for the link to TN3111. Very useful.

The waffle maker can be used standalone but also connected standalone to a user network. The flow is described as below:

  1. User sees a list of waffle makers in his/her application
  2. User selects a waffle maker from the list to connect
  3. After login in to the waffle maker, the user has the option to service the waffle maker and connect it to a wifi access point

Hope this clarifies!

The WAC experience is centred around unconfigured accessories. Note the name of EAWiFiUnconfiguredAccessoryBrowser. It gives you a list of unconfigured accessories and allows you to start the configuration process. The goal is to make the out-of-the-box experience fabulous for network-connected waffle makers. Indeed, the user doesn’t even need your app: They can get the waffle maker on to their network directly from Settings.

This doesn’t really line up with your use case. For example, in step 3 you need to interact with the waffle maker before it’s on the user’s network. A common strategy for dealing with that is for your accessory to publish its presence via Bluetooth LE. You can then either configure the accessory directly via Bluetooth LE, or use the information you get from Bluetooth LE to join the accessory’s network using NEHotspotConfigurationManager.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Thanks for your answer.

I was indeed thinking about using BLE as a possible solution and would share the flow with you (and future forum visitors needing a similar solution:

we are using the react-native-ble-plx

  1. The waffle makers will start broadcasting their presence over BLE
  2. The application will filter the waffle makers on their uuid and show them in the application
  3. A connection is made to each waffle maker to read additional information (waffle size, serial number) to show additional information in the application
  4. The user can select a specific waffle maker, a command is send over BLE to enable WiFi
  5. The 'react-native-wifi-reborn' package is used to connect to the waffle maker over WiFi
  6. We can now communicate to the waffle maker and control the heaters or update the firmware

Would that work or do you see any limitations?

Thanks!

Would that work or do you see any limitations?

It sounds like a reasonable plan [1]. With that in place, the next step is implementation, and that’s likely to present some unexpected challenges. My experiences is the devil when it comes to this sort of stuff.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] Although I can’t comment on the third-party tooling that you mentioned; I’ve no expertise in that.

Since the application is not only running on iOS devices but as well on macOS using the same codebase, would the same restrictions apply for listing the waffle makers in the application and should/could we use the plan as above?

Thanks for the support!

Showing nearby WiFi devices in your application
 
 
Q