Using Reachability for Internet *or* local WiFi?

Posted by randallmeadows on Stack Overflow See other posts from Stack Overflow or by randallmeadows
Published on 2010-04-15T18:11:07Z Indexed on 2010/04/15 18:13 UTC
Read the original article Hit count: 254

Filed under:
|
|
|

I've searched SO for the answer to this question, and it's not really addressed, at least not to a point where I can make it work.

I was originally only checking for Internet reachability, using:

self.wwanReach = [Reachability reachabilityWithHostName:@"www.apple.com"];
[wwanReach startNotifer];

I now need to support a local WiFi connection (in the absence of reaching the Internet in general), and when I found +reachabilityForLocalWiFi, I also noticed there was +reachabilityForInternetConnection. I figured I could use these, instead of hard-coding "www.apple.com" in there, but alas, when I use

self.wwanReach = [Reachability reachabilityForInternetConnection];
[wwanReach startNotifer];
self.wifiReach = [Reachability reachabilityForLocalWiFi];
[wifiReach startNotifer];

the reachability callback that I've set up "never" gets called, for values of "never" up to 10, 12, 15 minutes or so (which was as long as my patience lasted. (User's patience will be much less, I'm sure.) Switching back to +reachabilityWithHostName: works within seconds. I also tried each "pair" individually, in case there was an issue with two notifiers in progress simultaneously, but that made no difference.

So: what is the appropriate way to determine reachability to either the Internet/WWAN or a local Wifi network (either one, or both)?

[This particular use case is an iPhone or iPad connecting to a Mac mini computer-to-computer network; I'm sure other situations apply.]

© Stack Overflow or respective owner

Related posts about network

Related posts about reachability