Is there a notification that is dispatched when a user's device suddenly connects to wifi? Or something of this nature?
I'm wanted a certain selector/method in my app delegate to run whenever a user connects to wireless. How do I know when to perform my selector?
** EDIT **
I ended up finding an IOS 5 ARC friendly version of Reachability if anyone needs it.
You should include the Reachability header and implementation from here.
I did a project a while ago where I needed to check if I was connected to WiFi at certain times. Here's some code that may be useful to you:
- (BOOL) connectedToNetwork
{
// Create zero addy
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
// Recover reachability flags
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
if (!didRetrieveFlags)
{
printf("Error. Could not recover network reachability flags\n");
return 0;
}
BOOL isReachable = flags & kSCNetworkFlagsReachable;
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;
return ((isReachable && !needsConnection) && !(nonWiFi)) ? YES : NO;
}
It returns true if connected to WiFi.
One way to detect when a change occurs would be to run an NSTimer and check if the result changes over time. You wouldn't want to run it too often though.