Search code examples
iosobjective-cxcodewifi

How to check if WIFI button is enabled (iOS)


I want to be able to check to see if the user is connected to WiFi, but not connected to a network. So basically I want to check the state of the WiFi button on the device setting page to check if button is enabled or disabled.

At the moment I can check to see if the Wifi is connected to a network or not connected to an network doing the following:

BOOL hasWiFiNetwork = NO;
NSArray *interfaces = CFBridgingRelease(CNCopySupportedInterfaces());
for (NSString *interface in interfaces)
{
    NSDictionary *networkInfo = CFBridgingRelease(CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interface)));
    if (networkInfo != NULL)
    {
        hasWiFiNetwork = YES;
        break;
    }
    else
    {
        hasWiFiNetwork = NO;
        break;
    }
}

Solution

  • Update

    It turns out that it isn't possible, there is no API/Framework/BOOL value that can do this because Apple havn't added any kind of ability to check to see if the WiFi is switched on or off for developers. As explained nicely here: https://stackoverflow.com/a/12906461/4657588


    Then this SO post should be what you want: https://stackoverflow.com/a/7938778/4657588

    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    [reachability startNotifier];
    
    NetworkStatus status = [reachability currentReachabilityStatus];
    
    if (status == ReachableViaWiFi) {
        // WiFi
    }
    
    else {
        // Either WiFi is off or we are not connected to a WiFi network.
    }