iOS網路檢測Reachability 使用 Demo,可檢測2、3、4G,iosreachability

來源:互聯網
上載者:User

iOS網路檢測Reachability 使用 Demo,可檢測2、3、4G,iosreachability

你可以在Github下載這個Demo https://github.com/JanzTam/Reachability_Demo

 

首先,引入系統的Reachability類,不知道怎麼引入的話,在Xcode,按下shift+command+0,搜尋Reachability,看到圖中所選的工程下載即可。


Reachability.png並匯入相關.h檔案#import<CoreTelephony/CTTelephonyNetworkInfo.h>

引入後,Reachability.h檔案裡面修改NetworkStatus的枚舉,

typedef enum : NSInteger {    NotReachable = 0,    ReachableViaWiFi,    ReachableViaWWAN,    kReachableVia2G,    kReachableVia3G,    kReachableVia4G} NetworkStatus;

在修改下Reachability.m檔案
找到

- (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags

修改下面的代碼

if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)    {if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)        {            CTTelephonyNetworkInfo * info = [[CTTelephonyNetworkInfo alloc] init];            NSString *currentRadioAccessTechnology = info.currentRadioAccessTechnology;            if (currentRadioAccessTechnology)            {                if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE])                {                    returnValue =  kReachableVia4G;                }                else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS])                {                    returnValue =  kReachableVia2G;                }                else                {                    returnValue =  kReachableVia3G;                }                return returnValue;            }        }        if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection)        {            if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired)            {                returnValue =  kReachableVia2G;                return returnValue;            }            returnValue =  kReachableVia3G;            return returnValue;        }        returnValue = ReachableViaWWAN;    }
如何使用?

在AppDelegate裡加入

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    //設定狀態列    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];    // 監測網路情況    [[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(reachabilityChanged:)                                                 name: kReachabilityChangedNotification                                               object: nil];    hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];    [hostReach startNotifier];}
- (void)reachabilityChanged:(NSNotification *)note{    Reachability* curReach = [note object];    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);    NetworkStatus status = [curReach currentReachabilityStatus];    switch (status)    {        case NotReachable:            break;        case ReachableViaWiFi:        case ReachableViaWWAN:            break;        case kReachableVia2G:            break;        case kReachableVia3G:            break;        case kReachableVia4G:            break;    }}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.