如何確定iOS連接類型?如何確定iOS連接類型(Edge,3G,4G,Wifi)?
我想知道在我的設備上是否有Edge,3G,4G或Opteron。
這些信息我需要用不同的大小加載不同的數據。
所以,我不想用連接類型「邊緣」加載4 MB的圖像。
如何確定iOS連接類型?如何確定iOS連接類型(Edge,3G,4G,Wifi)?
我想知道在我的設備上是否有Edge,3G,4G或Opteron。
這些信息我需要用不同的大小加載不同的數據。
所以,我不想用連接類型「邊緣」加載4 MB的圖像。
您可以使用Apple的CTTelephonyNetworkInfo類。您可以在iOS 7+
需要導入它使用這個API: @import CoreTelephony
這不會告訴你手機是否在WiFi連接上 - 在這種情況下,如果沒有運營商,則聲明的CTTelephonyNetworkInfo對象將爲零。 – 2016-01-11 22:02:13
提供鏈接或摘錄給這個答案應該是有幫助的:因爲它提供的信息比Google搜索(OP已經完成的一個操作)要少。 – Marco 2016-02-10 23:30:15
爲SWIFT我們可以使用下面的功能:需要
func getNetworkType()->String {
do{
let reachability:Reachability = try Reachability.reachabilityForInternetConnection()
do{
try reachability.startNotifier()
let status = reachability.currentReachabilityStatus
if(status == .NotReachable){
return ""
}else if (status == .ReachableViaWiFi){
return "Wifi"
}else if (status == .ReachableViaWWAN){
let networkInfo = CTTelephonyNetworkInfo()
let carrierType = networkInfo.currentRadioAccessTechnology
switch carrierType{
case CTRadioAccessTechnologyGPRS?,CTRadioAccessTechnologyEdge?,CTRadioAccessTechnologyCDMA1x?: return "2G"
case CTRadioAccessTechnologyWCDMA?,CTRadioAccessTechnologyHSDPA?,CTRadioAccessTechnologyHSUPA?,CTRadioAccessTechnologyCDMAEVDORev0?,CTRadioAccessTechnologyCDMAEVDORevA?,CTRadioAccessTechnologyCDMAEVDORevB?,CTRadioAccessTechnologyeHRPD?: return "3G"
case CTRadioAccessTechnologyLTE?: return "4G"
default: return ""
}
}else{
return ""
}
}catch{
return ""
}
}catch{
return ""
}
}
我相信這需要Reachability庫和CoreTelephony。 – 2017-11-29 15:31:21
CoreTelephony.framework。
let networkInfo = CTTelephonyNetworkInfo()
let networkString = networkInfo.currentRadioAccessTechnology
if networkString == CTRadioAccessTechnologyLTE{
// LTE (4G)
}else if networkString == CTRadioAccessTechnologyWCDMA{
// 3G
}else if networkString == CTRadioAccessTechnologyEdge{
// EDGE (2G)
}
在Objective C:
首次進口@import CoreTelephony。
Reachability *reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus status = [reachability currentReachabilityStatus];
if(status == NotReachable)
{
//No internet
}
else if (status == ReachableViaWiFi)
{
//WiFi
}
else if (status == ReachableViaWWAN)
{
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
NSString * carrierType = netinfo.currentRadioAccessTechnology;
if ([carrierType isEqualToString:CTRadioAccessTechnologyGPRS]) {
// @"2G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyEdge]) {
// @"2G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyWCDMA]) {
// @"3G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyHSDPA]) {
// @"3G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyHSUPA]) {
// @"3G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
// @"2G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
// @"3G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
// @"3G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
// @"3G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyeHRPD]) {
// @"3G";
} else if ([carrierType isEqualToString:CTRadioAccessTechnologyLTE]) {
// @"4G";
}
}
import CoreTelephony
enum RadioAccessTechnology: String {
case cdma = "CTRadioAccessTechnologyCDMA1x"
case edge = "CTRadioAccessTechnologyEdge"
case gprs = "CTRadioAccessTechnologyGPRS"
case hrpd = "CTRadioAccessTechnologyeHRPD"
case hsdpa = "CTRadioAccessTechnologyHSDPA"
case hsupa = "CTRadioAccessTechnologyHSUPA"
case lte = "CTRadioAccessTechnologyLTE"
case rev0 = "CTRadioAccessTechnologyCDMAEVDORev0"
case revA = "CTRadioAccessTechnologyCDMAEVDORevA"
case revB = "CTRadioAccessTechnologyCDMAEVDORevB"
case wcdma = "CTRadioAccessTechnologyWCDMA"
var description: String {
switch self {
case .gprs, .edge, .cdma:
return "2G"
case .lte:
return "4G"
default:
return "3G"
}
}
}
// Example:
let networkInfo = CTTelephonyNetworkInfo()
let networkString = networkInfo.currentRadioAccessTechnology
let tecnology = RadioAccessTechnology(rawValue: networkString)
print(tecnology.description)
檢查這個https://github.com/Isuru-Nanayakkara/Swift-Reachability – Kalpesh 2014-12-09 13:21:38
的可能的複製[iOS的檢測3G或WiFi(https://stackoverflow.com/questions/7938650/ ios-detect-3g-or-wifi) – 2017-10-13 14:26:35