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

更多文章请关注《万象专栏》