Skip to content

Instantly share code, notes, and snippets.

@hikui
Last active August 29, 2015 14:13
Show Gist options
  • Save hikui/de368fdae1fbb7e3c442 to your computer and use it in GitHub Desktop.
Save hikui/de368fdae1fbb7e3c442 to your computer and use it in GitHub Desktop.
Determine mobile network technology(e.g. 2G, 3G, 4G)
static CTTelephonyNetworkInfo * __telephonyNetworkInfo;
SBNetworkReachability SBGetAccurateNetworkReachability()
{
SBNetworkReachability reachability = SBGetNetworkReachability();
if (reachability == SBNetworkReachabilityMobile) {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) {
if (!__telephonyNetworkInfo) {
__telephonyNetworkInfo = [CTTelephonyNetworkInfo new];
}
NSString * radioAccessTechnology = __telephonyNetworkInfo.currentRadioAccessTechnology;
if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS] ||
[radioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] ||
[radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x])
reachability = SBNetworkReachabilityMobile2G;
else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE])
reachability = SBNetworkReachabilityMobile4G;
else
reachability = SBNetworkReachabilityMobile3G;
} else {
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityGetFlags(__reachability, &flags);
return ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection) ? SBNetworkReachabilityMobile2G : SBNetworkReachabilityMobile3G;
}
}
return reachability;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment