最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Reachability類判斷iOS設(shè)備的當(dāng)前網(wǎng)絡(luò)連接類型

 更新時(shí)間:2016年02月03日 09:18:31   作者:Windchaser  
這篇文章主要介紹了使用Reachability類判斷iOS設(shè)備的當(dāng)前網(wǎng)絡(luò)連接類型,這里開發(fā)語言為傳統(tǒng)的Objectice-C,需要的朋友可以參考下


(1). 下載 https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

(2). 拖reachability.h,reachability.m入工程 (庫非ARC)

ARC:-fno-objc-arc              

(3) .導(dǎo)入SystemConfiguration.framework

(4).用法

復(fù)制代碼 代碼如下:

-(NSString*)getNetType
 
{
    
    NSString* result;
    
    Reachability *r = [Reachability reachabilityWithHostName:@"www.baidu.com"];
    NSLog(@"  ====:%i",[r currentReachabilityStatus]);
    switch ([r currentReachabilityStatus]) {
            
        case NotReachable:// 沒有網(wǎng)絡(luò)連接
            
            
            result=@"沒有網(wǎng)絡(luò)連接";
            
            break;
            
        case ReachableViaWWAN:// 使用3G網(wǎng)絡(luò)
            
            result=@"3g";
            
            break;
            
        case ReachableViaWiFi:// 使用WiFi網(wǎng)絡(luò)
            
            result=@"wifi";
            
            break;
            
    }
    NSLog(@"caseReachableViaWWAN=%i",ReachableViaWWAN);
    NSLog(@"caseReachableViaWiFi=%i",ReachableViaWiFi);
    return result;
    
}

(5)如果無法區(qū)分出2G、2.5G、3G網(wǎng)絡(luò)的區(qū)別,那么我們可以將Reachability.m中的networkStatusForFlags方法重構(gòu):

復(fù)制代碼 代碼如下:

- (NetworkStatus) networkStatusForFlags: (SCNetworkReachabilityFlags) flags
{
    if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
    {
        return NotReachable;
    }
    
    BOOL retVal = NotReachable;
    
    if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)
    {
        // if target host is reachable and no connection is required
        //  then we'll assume (for now) that your on Wi-Fi
        retVal = ReachableViaWiFi;
    }
    
    
    if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) ||
         (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0))
    {
        // ... and the connection is on-demand (or on-traffic) if the
        //     calling application is using the CFSocketStream or higher APIs
        if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
        {
            // ... and no [user] intervention is needed
            retVal = ReachableViaWiFi;
        }
    }
    
    if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
    {
        if((flags & kSCNetworkReachabilityFlagsReachable) == kSCNetworkReachabilityFlagsReachable) {
            if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection) {
                retVal = ReachableVia3G;
                if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired) {
                    retVal = ReachableVia2G;
                }
            }
        }
    }
    return retVal;
}
 
//檢查當(dāng)前網(wǎng)絡(luò)連接是否正常
-(BOOL)connectedToNetWork
{
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;
    
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;
    
    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);
    
    if (!didRetrieveFlags) {
        printf("Error. Count not recover network reachability flags\n");
        return NO;
    }
    
    BOOL isReachable = flags & kSCNetworkFlagsReachable;
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    return (isReachable && !needsConnection) ? YES : NO;
}
 
//檢查網(wǎng)絡(luò)連接類型
-(void)checkNetworktype:(id)sender{
    NSString *connectionKind;
    if ([self connectedToNetWork]) {
        hostReach = [Reachability reachabilityWithHostName:@"www.google.com"];
        switch ([hostReach currentReachabilityStatus]) {
            case NotReachable:
                connectionKind = @"沒有網(wǎng)絡(luò)鏈接";
                break;
            case ReachableViaWiFi:
                connectionKind = @"當(dāng)前使用的網(wǎng)絡(luò)類型是WIFI";
                break;
            case ReachableVia3G:
                connectionKind = @"當(dāng)前使用的網(wǎng)絡(luò)鏈接類型是WWAN(3G)";
                break;
            case ReachableVia2G:
                connectionKind = @"當(dāng)前使用的網(wǎng)絡(luò)鏈接類型是WWAN(2G)";
                break;   
            default:
                break;
        }
    }else {
        connectionKind = @"沒有網(wǎng)絡(luò)鏈接";
    }
}

相關(guān)文章

  • 單純聊一聊iOS10適配

    單純聊一聊iOS10適配

    這篇文章主要為大家簡單介紹了iOS10適配的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS應(yīng)用開發(fā)中使UITextField實(shí)現(xiàn)placeholder屬性的方法

    iOS應(yīng)用開發(fā)中使UITextField實(shí)現(xiàn)placeholder屬性的方法

    這篇文章主要介紹了iOS應(yīng)用開發(fā)中使UITextField實(shí)現(xiàn)placeholder屬性的方法,示例代碼為傳統(tǒng)的Objective-C語言,需要的朋友可以參考下
    2016-04-04
  • iOS如何自定義步驟進(jìn)度條實(shí)例詳解

    iOS如何自定義步驟進(jìn)度條實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何自定義步驟進(jìn)度條的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動回到頂部效果詳解

    iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動回到頂部效果詳解

    在IOS開發(fā)過程中,經(jīng)常會有這種需求,需要通過點(diǎn)擊狀態(tài)欄返回到頂部,給用戶更好的體驗(yàn)效果,下面這篇文章給大家詳細(xì)介紹了實(shí)現(xiàn)過程,有需要的可以參考借鑒。
    2016-09-09
  • iOS使用UICollectionView實(shí)現(xiàn)拖拽移動單元格

    iOS使用UICollectionView實(shí)現(xiàn)拖拽移動單元格

    這篇文章主要為大家詳細(xì)介紹了iOS開發(fā)UICollectionView拖拽移動單元格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • iOS判斷運(yùn)營商類型的實(shí)現(xiàn)方法

    iOS判斷運(yùn)營商類型的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猧OS判斷運(yùn)營商類型的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • iOS開發(fā)中使app獲取本機(jī)通訊錄的實(shí)現(xiàn)代碼實(shí)例

    iOS開發(fā)中使app獲取本機(jī)通訊錄的實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了iOS開發(fā)中使app獲取本機(jī)通訊錄的實(shí)現(xiàn)代碼實(shí)例,主要用到了AddressBook.framework和AddressBookUI.framework,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-01-01
  • 提高iOS開發(fā)的小技巧和思路小結(jié) (二)

    提高iOS開發(fā)的小技巧和思路小結(jié) (二)

    這篇文章主要跟大家分享了關(guān)于提高iOS開發(fā)的一些小技巧和思路,通過本文總結(jié)的這些小技巧和思路相信對對大家開發(fā)iOS具有一定的參考價(jià)值,感興趣的朋友們可以參考學(xué)習(xí),下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-04-04
  • iOS實(shí)現(xiàn)支付寶螞蟻森林隨機(jī)按鈕及抖動效果

    iOS實(shí)現(xiàn)支付寶螞蟻森林隨機(jī)按鈕及抖動效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)支付寶螞蟻森林隨機(jī)按鈕及抖動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • iOS tabview如何添加字母索引

    iOS tabview如何添加字母索引

    這篇文章主要為大家詳細(xì)介紹了iOS tabview如何添加字母索引,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

临汾市| 宝兴县| 巨野县| 英吉沙县| 天气| 涿州市| 灵丘县| 康平县| 准格尔旗| 昌图县| 女性| 灵武市| 柯坪县| 南宁市| 桐庐县| 扬州市| 莆田市| 南丰县| 蚌埠市| 唐山市| 赫章县| 荔波县| 东安县| 保德县| 武鸣县| 宽城| 永仁县| 渑池县| 海宁市| 阿拉善盟| 城口县| 文水县| 兴化市| 壤塘县| 定襄县| 尤溪县| 宣恩县| 天津市| 濉溪县| 柳江县| 太保市|