是否可以观察用户何时在WiFi和蜂窝数据(3G / 4G)之间切换?
也许在Reachability中有些东西,但我不知道是什么。
答案 0 :(得分:3)
我认为最简单的方法是导入CoreTelephony并观察CTRadioAccessTechnologyDidChangeNotification,然后将其切换为:
let networkInfo = CTTelephonyNetworkInfo()
let radio = networkInfo.currentRadioAccessTechnology
guard let currentRadio = radio else {
print("No radio info available")
return
}
switch currentRadio {
case CTRadioAccessTechnologyLTE,
CTRadioAccessTechnologyHSDPA: //3.5G "T-Mobile 4G"
print("This is 4G / LTE")
case CTRadioAccessTechnologyeHRPD, //3.5G "Verizon 3G"
CTRadioAccessTechnologyHSUPA,
CTRadioAccessTechnologyWCDMA,
CTRadioAccessTechnologyCDMAEVDORev0,
CTRadioAccessTechnologyCDMAEVDORevA,
CTRadioAccessTechnologyCDMAEVDORevB:
print("This is 3G")
case CTRadioAccessTechnologyGPRS,
CTRadioAccessTechnologyCDMA1x
CTRadioAccessTechnologyEdge:
print("This is 2G")
default:
print("Unknown cellular network type")
}
如果您在使用标准可达性时收听该通知,则可以使用此开关获取单元网络类型。您需要currentReachabilityStatus来独立检查WiFi连接。据我所知,在Swift中你需要设置一个桥接头来使用Apple的Reachability类,但是在github上也有Swift实现。
答案 1 :(得分:2)
是可达性为您提供连接的网络类型。它提供3种不同的状态 - 未连接到互联网,连接到Wifi,连接到移动数据。
NetworkStatus status = [reachability currentReachabilityStatus];
if(status == NotReachable)
{
//No Connectivity to Internet
}
else if (status == ReachableViaWiFi)
{
//Connected via WiFi
}
else if (status == ReachableViaWWAN)
{
//Connected via Mobile Data
}