`

ios 判断网络连接以及获取路由信息

    博客分类:
  • ios
 
阅读更多
首先 引入 Reachability.h 和Reachability.m文件以及#import <SystemConfiguration/CaptiveNetwork.h>
1.判断网络类型
    Reachability *r = [Reachability reachabilityWithHostName:@"www.baudu.com"];
 
    switch ([r currentReachabilityStatus]) {
            //NSString *wifiName = @"Not Found";
        case NotReachable:
            // 没有网络连接
            NSLog(@"没有网络连接");
            break;
        case ReachableViaWWAN:
            // 使用3G网络
            NSLog(@"使用3G网络");
            break;
        case ReachableViaWiFi:
            // 使用WiFi网络
            NSLog(@"使用WiFi网络");
            break;
    }


2.获取路由信息
- (NSString *)getBSSID
{
    NSDictionary *ifs = [self fetchSSIDInfo];
    NSString *bssid = [[ifs objectForKey:@"BSSID"] uppercaseString];
    NSString *bssidValue;
    if([bssid isEqualToString:@"UNSUPPORTED"]){
        NSLog(@"Simulator doesn't detect wifi, please connect your iPhone!");
        bssidValue = @"";
    }else{
        //第一位为0的时候会被省略掉
        //封装第一位为0的情况
        NSArray *array=[bssid componentsSeparatedByString:@":"];
        NSMutableArray *tempArray = [[NSMutableArray alloc]init];
        for(int i = 0; i < [array count]; i++){
            if([array[i] length]== 1){
                [tempArray addObject:[@"0" stringByAppendingString:[NSString stringWithFormat:@"%@", [array objectAtIndex:i]]]];
                
            }else{
                [tempArray addObject:[NSString stringWithFormat:@"%@", [array objectAtIndex:i]]];
            }
        }
        bssidValue = [tempArray componentsJoinedByString:@":"];
    }
    NSLog(@"bssid=%@",bssidValue);
    return bssidValue;
}

- (NSString *)getSSID
{
    NSDictionary *ifs = [self fetchSSIDInfo];
    NSString *ssid = [ifs objectForKey:@"SSID"];
    NSString *ssidValue;
    if([[ssid uppercaseString] isEqualToString:@"UNSUPPORTED"]){
        NSLog(@"Simulator doesn't detect wifi, please connect your iPhone!");
        ssidValue = @"";
    }else{
        ssidValue = ssid;
    }
    
    return ssidValue;
}

- (id)fetchSSIDInfo
{
    NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
    NSLog(@"Supported interfaces: %@", ifs);
    NSDictionary *info;
    if (!ifs) {
        info = [NSDictionary dictionaryWithObjectsAndKeys:
                @"UNSUPPORTED", @"SSID",
                @"UNSUPPORTED", @"BSSID", nil];
    } else{
        for (NSString *ifnam in ifs) {
            info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
            NSLog(@"%@ => %@", ifnam, info);
            if (info && [info count]) { break; }
        }
    }
    return info;
}

然后调用下getBSSID就可以了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics