国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS判斷網(wǎng)絡(luò)狀態(tài)

2019-11-07 23:26:49
字體:
供稿:網(wǎng)友
(一).Reachability添加源文件及Framework

Apple 的官方例子 Reachability 中介紹了獲取、檢測設(shè)備當(dāng)前網(wǎng)絡(luò)狀態(tài)的方法。在你的程序中,需要把該工程中的Reachability.h 和 Reachability.m 拷貝到你的工程中,同時需要把 SystemConfiguration.framework 添加到工程中,

如下圖:

// 監(jiān)聽網(wǎng)絡(luò)狀態(tài)改變的通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];// 創(chuàng)建Reachabilityself.conn = [Reachability reachabilityForInternetConnection];// 開始監(jiān)控網(wǎng)絡(luò)(一旦網(wǎng)絡(luò)狀態(tài)發(fā)生改變, 就會發(fā)出通知kReachabilityChangedNotification)[self.conn startNotifier];// 處理網(wǎng)絡(luò)狀態(tài)改變- (void)networkStateChange{    // 1.檢測wifi狀態(tài)    Reachability *wifi = [Reachability reachabilityForLocalWiFi];        // 2.檢測手機是否能上網(wǎng)絡(luò)(WIFI/3G/2.5G)    Reachability *conn = [Reachability reachabilityForInternetConnection];        // 3.判斷網(wǎng)絡(luò)狀態(tài)    if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi        NSLog(@"有wifi");    } else if ([conn currentReachabilityStatus] != NotReachable) { // 沒有使用wifi, 使用手機自帶網(wǎng)絡(luò)進(jìn)行上網(wǎng)        NSLog(@"使用手機自帶網(wǎng)絡(luò)進(jìn)行上網(wǎng)");    } else { // 沒有網(wǎng)絡(luò)        NSLog(@"沒有網(wǎng)絡(luò)");    }}(二).AFN// 1.獲得網(wǎng)絡(luò)監(jiān)控的管理者AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];// 2.設(shè)置網(wǎng)絡(luò)狀態(tài)改變后的處理[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {    // 當(dāng)網(wǎng)絡(luò)狀態(tài)改變了, 就會調(diào)用這個block    switch (status) {        case AFNetworkReachabilityStatusUnknown: // 未知網(wǎng)絡(luò)            NSLog(@"未知網(wǎng)絡(luò)");            break;                    case AFNetworkReachabilityStatusNotReachable: // 沒有網(wǎng)絡(luò)(斷網(wǎng))            NSLog(@"沒有網(wǎng)絡(luò)(斷網(wǎng))");            break;                    case AFNetworkReachabilityStatusReachableViaWWAN: // 手機自帶網(wǎng)絡(luò)            NSLog(@"手機自帶網(wǎng)絡(luò)");            break;                    case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI            NSLog(@"WIFI");            break;    }}];// 3.開始監(jiān)控[mgr startMonitoring];(三)從狀態(tài)欄中獲取網(wǎng)絡(luò)類型,代碼如下:- (NSString *)getNetWorkStates{    UIapplication *app = [UIApplication sharedApplication];    NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];    NSString *state = [[NSString alloc]init];    int netType = 0;    //獲取到網(wǎng)絡(luò)返回碼    for (id child in children) {        if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {            //獲取到狀態(tài)欄            netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];                        switch (netType) {                case 0:                    state = @"無網(wǎng)絡(luò)";                    //無網(wǎng)模式                    break;                case 1:                    state =  @"2G";                    break;                case 2:                    state =  @"3G";                    break;                case 3:                    state =   @"4G";                    break;                case 5:                {                    state =  @"wifi";                    break;                default:                    break;                }            }        }        //根據(jù)狀態(tài)選擇    }    return state;} 基本原理是從UIApplication類型中通過valueForKey獲取內(nèi)部屬性 statusBar。然后篩選一個內(nèi)部類型(UIStatusBarDataNetworkItemView),最后返回他的 dataNetworkType屬性,根據(jù)狀態(tài)欄獲取網(wǎng)絡(luò)狀態(tài),可以區(qū)分2G、3G、4G、WIFI,系統(tǒng)的方法,比較快捷,不好的是萬一連接的WIFI 沒有聯(lián)網(wǎng)的話,識別不到。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳江市| 沙湾县| 南昌市| 宝应县| 莱芜市| 台南市| 壤塘县| 辰溪县| 新竹市| 三都| 灵丘县| 赣州市| 龙江县| 丽水市| 潢川县| 洮南市| 阿尔山市| 大同县| 万安县| 沂源县| 江陵县| 罗城| 夏津县| 淳化县| 雷波县| 镇康县| 灵台县| 延川县| 淮安市| 兖州市| 龙岩市| 广昌县| 甘谷县| 洞口县| 峨眉山市| 和林格尔县| 清原| 新昌县| 海伦市| 尖扎县| 错那县|