Swift 2G/3G/4G网络判断
2024-04-09 18:10:31  阅读数 794

我们可以引用import CoreTelephony框架下的一些API来判断当前的网络
iOS系统API定义:
/*

  • Radio Access Technology values
    */
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyGPRS: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyEdge: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyWCDMA: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyHSDPA: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyHSUPA: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyCDMA1x: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyCDMAEVDORev0: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyCDMAEVDORevA: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyCDMAEVDORevB: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyeHRPD: String
    @available(iOS 7.0, *)
    public let CTRadioAccessTechnologyLTE: String
    @available(iOS 14.1, *)
    public let CTRadioAccessTechnologyNRNSA: String
    @available(iOS 14.1, *)
    public let CTRadioAccessTechnologyNR: String

网络判断:

func networkStatus() {
        let arr2g = [CTRadioAccessTechnologyEdge,CTRadioAccessTechnologyGPRS,CTRadioAccessTechnologyCDMA1x]
        let arr3g = [CTRadioAccessTechnologyHSDPA,CTRadioAccessTechnologyWCDMA,CTRadioAccessTechnologyHSUPA,CTRadioAccessTechnologyCDMAEVDORev0,CTRadioAccessTechnologyCDMAEVDORevA,CTRadioAccessTechnologyCDMAEVDORevB,CTRadioAccessTechnologyeHRPD]
        let arr4g = [CTRadioAccessTechnologyLTE]
        let teleInfo = CTTelephonyNetworkInfo()
        guard let netStr = teleInfo.currentRadioAccessTechnology else {
            return
        }
        if arr4g.contains(netStr) {
            print("4G网络")
        }else if arr3g.contains(netStr) {
            print("3G网络")
        }else if arr2g.contains(netStr) {
            print("2G网络")
        }else {
            print("未知网络")
        }
    }