Xcode Devices & Simulators Window

I had a lot of trouble finding out how to get my freshly developed App onto my Apple Watch for testing.

As the watch is primarily tied to my iPhone, I first thought my app would be installed onto the watch through my iPhone, sort of like when you get an iOS app from the App Store, which has a companion app for the watch… you can then use the “Watch” app on iPhone to “install” the app on the Watch.

But no, it doesn’t work like that at all. Xcode connects directly to the watch and uploads directly to it.

Actually, I now think the iPhone never pushes an app to the Watch. I think all it does is tell the watch to go download the Watch app from the App Store… but that remains to be confirmed…

Practically…

In order for Xcode to see the watch, bluetooth needs to be ON, both on the watch AND on the Mac!

Then, furthermore, for any upload to take place, the watch must also have WiFi turned on… but if the Mac is connected by Ethernet and the Watch is on WiFi but on a different networks (like different VLANs), that still won’t work…

However, if you now turn on WiFi also on the mac, they will finally be able to communicate! 🎉

What I think I figured out: Xcode will communicate with the watch first via BT and then switch to WiFi BUT neither the mac nor the watch need to be connected to a WiFi access point, they can negociate their own temporary ad-hoc wifi network.

It’s the shame the Xcode UI only has cryptic error messages and no clear indications about turning on Bluetooth and WiFi on the Mac, as it’s ridiculously easy for Xcode to check for that!