elp*_*elp 21 iphone network-programming objective-c iphone-privateapi ios
如何获得运营商网络的连接类型?
Reachability类 连接是WIFI或WWAN,我能够得到我能够获得网络标志
可达性标志状态:WR t ------ localWiFiStatusForFlags
我可以使用WIFI SSID CaptiveNetwork
支持的接口:(en0)
en0 => {
BSSID = "xx:xx:xx:xx:xx:xx";
SSID = MyWifiNetwork;
SSIDDATA = <x1x1x1x1 x1x1x1x1 x1>;
}
Run Code Online (Sandbox Code Playgroud)
但我无法区分3G,EDGE或GPRS连接.
任何想法也使用iOS私有API?
谢谢.
Ben*_*oot 61
从iOS 7开始,您可以使用:
CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
NSLog(@"Current Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology);
[NSNotificationCenter.defaultCenter addObserverForName:CTRadioAccessTechnologyDidChangeNotification
object:nil
queue:nil
usingBlock:^(NSNotification *note)
{
NSLog(@"New Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology);
}];
Run Code Online (Sandbox Code Playgroud)
我还发现这可以检测慢速或快速连接:
- (BOOL)isFast:(NSString*)radioAccessTechnology {
if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {
return NO;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
return NO;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]) {
return YES;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]) {
return YES;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]) {
return YES;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
return NO;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
return YES;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
return YES;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
return YES;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
return YES;
} else if ([radioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
return YES;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
这里是OLD解决方案,特别是使用私有APISoftwareUpdateServices.framework
Class NetworkMonitor = NSClassFromString(@"SUNetworkMonitor");
NSLog(@"TYPE: %d", [NetworkMonitor currentNetworkType]);
Run Code Online (Sandbox Code Playgroud)
它返回:
0:无数据
1:WIFI
2:GPRS/EDGE
3:3G
希望这有助于社区.
| 归档时间: |
|
| 查看次数: |
20532 次 |
| 最近记录: |