簡體   English   中英

iPhone主動網絡類型(2G,3G,WiFi)

[英]iPhone active network type (2G, 3G, WiFi)

有誰知道如何確定特定時刻的活動網絡類型: 2G3GWiFi

例如,在特定時刻可能啟用3G ,但使用的網絡類型可能是2G

SCNetworkReachability接口可以幫助您。 基本上,您創建一個所謂的可達性引用,然后在其上調用SCNetworkReachabilityGetFlags以獲取有關連接的信息。

返回的標志包括kSCNetworkReachabilityFlagsIsWWAN ,它告訴您是通過WiFi還是通過蜂窩網絡連接。 但AFAIK不能用來說明2G和3G之間的區別。

有關實施,請參閱Apple的Reachability示例應用程序 在大多數情況下,您應該能夠直接在項目中使用包含的Reachability類。

轉到Apple Developer站點,下載名為“Reachability”的示例項目

它提供了您想要做的事情的示例。

值得注意的是,我不相信你可以區分EDGE(2G)和3G連接。 這是WiFi或WWAN。

這是在swift中查找設備的網絡模式(2G,3G,4G或wifi)的方法。

if let reachability = Reachability.forInternetConnection() {

        reachability.startNotifier()

        let status = reachability.currentReachabilityStatus()

        if status == .init(0) {
            // .NotReachable

            print("Not Reachable")

        }
        else if status == .init(1) {
            // .ReachableViaWiFi

            print("Reachable Via WiFi")

        }
        else if status == .init(2) {
            // .ReachableViaWWAN
            let netInfo = CTTelephonyNetworkInfo()

            if let cRAT = netInfo.currentRadioAccessTechnology  {

                switch cRAT {

                case CTRadioAccessTechnologyGPRS,
                     CTRadioAccessTechnologyEdge,
                     CTRadioAccessTechnologyCDMA1x:

                    print("Reachable Via 2G")


                    do{
                        try realm.write {
                            realm.add(ModalDataSaver.singletonClass)
                        }
                    }catch
                    {
                        print("Error in saving data :- \(error.localizedDescription)")
                    }


                case CTRadioAccessTechnologyWCDMA,
                     CTRadioAccessTechnologyHSDPA,
                     CTRadioAccessTechnologyHSUPA,
                     CTRadioAccessTechnologyCDMAEVDORev0,
                     CTRadioAccessTechnologyCDMAEVDORevA,
                     CTRadioAccessTechnologyCDMAEVDORevB,
                     CTRadioAccessTechnologyeHRPD:

                    print("Reachable Via 3G")

                case CTRadioAccessTechnologyLTE:

                    print("Reachable Via 4G")

                default:

                    fatalError("error")

                }
            }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM