In my case there are three interfaces. I had a mental model that I now believe is incorrect.
If any of the 3 interfaces is "satisfied", then I get one message telling me so. I guess if that one interface goes down, then I should get a second message that tells me that (this is hard to test as Xcode keeps disconnecting from my device when I switch to Settings to change things).
in my case, wifi and cellular are both on. I launch the app, get notified that wifi is satisfied, but nothing on cellular.
So my guess is there is a hierarchy: wired, wifi, and cellular. If the highest priority path is available, the others are assumed "off" since you have a path. Thus, you will never get "satisfied" for more than one path.
Correct?
Because we allow massive data to flow in either direction, we also condition on cellular
This results in a TOCTTOU window, which is one of the specific reasons why we recommend against using preflighting. A better approach is to apply constraints to your requests. That way they’ll never go over the wrong interface.
Also, we recommend against using Wi-Fi / WWAN for this, but rather use the expensive / inexpensive constraint. Without that, a user on truly unlimited WWAN will not be artificially constrained. Indeed, many such users are never on Wi-Fi.
We have a techtalk, Adapt to changing network conditions, that goes into this stuff in depth.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"