import Foundation
import CoreTelephony
/// 装备收集范例
public enum NetworkType {
case unknow, unconnect, wifi
/// 手铃博网机收集
case phone(NetPhoneType)
/// 当前的联接收集范例
var type: String {
switch self {
case .unknow:
return "unknow"
case .unconnect:
return "unconnect"
case .wifi:
return "wifi"
case .phone(let netPhoneType):
return netPhoneType.rawValue
}
}
/// 手铃博网机收集范例
public enum NetPhoneType: String {
case unknow = "unknow"
case _二G = "二G"
case _三G = "三G"
case _四G = "四G"
case _五G = "五G"
static var type: NetPhoneType {
return getNetPhoneType()
}
}
}
private extension NetworkType.NetPhoneType {
/// 获与手铃博网机收集范例
static func getNetPhoneType() -> NetworkType.NetPhoneType {
let info = CTTelephonyNetworkInfo()
var type: String
if #available(iOS 一二, *) {
type = info.serviceCurrentRadioAccessTechnology?.values.first ?? ""
} else {
type = info.currentRadioAccessTechnology ?? ""
}
guard !type.isEmpty else {
return .unknow
}
let _二gTypes = [CTRadioAccessTechnologyGPRS,
CTRadioAccessTechnologyEdge,
CTRadioAccessTechnologyCDMA一x]
if _二gTypes.contains(type) {
return ._二G
}
let _三gTypes = [CTRadioAccessTechnologyHSDPA,
CTRadioAccessTechnologyWCDMA,
CTRadioAccessTechnologyHSUPA,
CTRadioAccessTechnologyCDMAEVDORev0,
CTRadioAccessTechnologyCDMAEVDORevA,
CTRadioAccessTechnologyCDMAEVDORevB,
CTRadioAccessTechnologyeHRPD]
if _三gTypes.contains(type) {
return ._三G
}
let _四gTypes = [CTRadioAccessTechnologyLTE]
if _四gTypes.contains(type) {
return ._四G
}
if #available(iOS 一四.一, *) {
let _五gTypes = [CTRadioAccessTechnologyNR, CTRadioAccessTechnologyNRNSA]
if _五gTypes.contains(type) {
return ._五G
}
}
return .unknow
}
}
转自:https://www.cnblogs.com/mustard22/p/15351919.html
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv3548