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

本文介绍了一个iOS应用中检测网络状态并获取WiFi详细信息的方法。通过Reachability类可以判断当前网络是否可达以及网络类型(如3G或WiFi)。此外,还提供了获取当前WiFi的BSSID和SSID的具体实现。
首先 引入 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就可以了
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值