iOS Detect 3G or WiFi iOS Detect 3G or WiFi ios ios

iOS Detect 3G or WiFi


Using the code that Apple has provided here

Reachability *reachability = [Reachability reachabilityForInternetConnection];[reachability startNotifier];NetworkStatus status = [reachability currentReachabilityStatus];if(status == NotReachable) {    //No internet}else if (status == ReachableViaWiFi){    //WiFi}else if (status == ReachableViaWWAN) {    //3G}


If you don't want to import Reachability library or deal with notifiers, you can use this simple synchronous method:

typedef enum {    ConnectionTypeUnknown,    ConnectionTypeNone,    ConnectionType3G,    ConnectionTypeWiFi} ConnectionType;+ (ConnectionType)connectionType{    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, "8.8.8.8");    SCNetworkReachabilityFlags flags;    BOOL success = SCNetworkReachabilityGetFlags(reachability, &flags);    CFRelease(reachability);    if (!success) {        return ConnectionTypeUnknown;    }    BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0);    BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0);    BOOL isNetworkReachable = (isReachable && !needsConnection);    if (!isNetworkReachable) {        return ConnectionTypeNone;    } else if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) {        return ConnectionType3G;    } else {        return ConnectionTypeWiFi;    }}


Import Apple's Reachability and try this,

#import "Reachability.h"#import <CoreTelephony/CTTelephonyNetworkInfo.h>//Try thisReachability *reachability = [Reachability reachabilityForInternetConnection];    [reachability startNotifier];    NetworkStatus status = [reachability currentReachabilityStatus];    if(status == NotReachable)    {       NSLog(@"none");        //No internet    }    else if (status == ReachableViaWiFi)    {        NSLog(@"Wifi");        //WiFi    }    else if (status == ReachableViaWWAN)    {        NSLog(@"WWAN");    //connection type    CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];    _carrier = [[netinfo subscriberCellularProvider] carrierName];    if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {        NSLog(@"2G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {        NSLog(@"2G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]) {        NSLog(@"3G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]) {        NSLog(@"3G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]) {        NSLog(@"3G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]) {        NSLog(@"2G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {        NSLog(@"3G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {        NSLog(@"3G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {        NSLog(@"3G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {        NSLog(@"3G");    } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {        NSLog(@"4G");    }    }

References(Links may broke in future) :