NWPathMonitor never satisfied on watchOS on a real device, only on Simulator - why?

I’m trying to use NWPathMonitor in my watchOS 6 app. The weird thing is that it works fine in Simulator, but is never ‘satisfied’ on a real device. Is there a reason why this is so? If it is a limitation of a real device, then perhaps Simulator should reflect that limitation. If it’s not a limitation, then how can I coax the device to return ‘satisfied’?

watchOS apps are not allowed to use low-level networking except in very limited circumstances, namely, audio streaming apps [1].

Are you an audio streaming app? If not, I wouldn’t expect

NWPathMonitor
to be helpful on the watch.

Share and Enjoy

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

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

ps DTS is closed 21 Dec through 1 Jan.

[1] See WWDC 2019 Session 716 Streaming Audio on watchOS 6 for more background on this.

Is NWPathMonitor really low-level networking? I would expect that NWPathMonitor was not made available on watchOS, if it really was not usable.

I have the same issue as Zatman: I have developed an app in Simulator on watchOS and was getting expected behavior of NWPathMonitor. Unfortunately the test with a real watch was getting me into trouble:

Probably I am not the only one, having this issue: https://stackoverflow.com/questions/61336528/how-to-get-network-connection-status-in-apple-watch-standalone-application

I don't see the connection between audio streaming and network reachability. NWPathMonitor is the documented apple API for doing this on watchOS (having no SCNetworkReachability to use there). What am I missing?

I am also seeing this always return not satisfied. Does this need a radar? This is simply broken.

I don't see the connection between audio streaming and network reachability.

Because the usual reason to check for network connectivity is to make a network connection, and you won’t be able to do this on watchOS outside of the context of an audio streaming app. See Matt’s Low-Level Networking on watchOS post for more details.

Why do you need to check network connectivity on a platform where you can’t make an outgoing network connection?

Share and Enjoy

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

The watch does make outgoing network connections. For instance, I have a watch app that uploads CMMovementDisorderManager data to a server for use in a research/clinical environment. Currently the only way I know to stop trying uploads due to network connectivity is when those requests timeout.

I don't understand why you keep saying that the only reason to want to know if watchOS has network connectivity is for audio streaming. I don't see that supported in the docs anywhere, NWPathMonitor simply doesn't work as documented. I don't understand why you keep responding as if developers are doing something weird to want to know if the device they are on has a network connection.

I also think this is broken and quite confusing. Our watchOS app makes network requests just as our iOS one does. I don't get why we can get the status of the connection on iOS, in order to avoid making unnecessary requests, but not on watchOS.

This API should be available to every watchOS app, but, if that's not possible for whatever reason, the documentation of NWPathMonitor or NWPath should point out that it's only available for audio streaming apps. My feedback for this: FB11504586

NWPathMonitor never satisfied on watchOS on a real device, only on Simulator - why?
 
 
Q