【问题标题】:How to get bssid in iPhone without private library?如何在没有私人图书馆的情况下在 iPhone 中获取 bssid?
【发布时间】:2013-02-18 04:41:38
【问题描述】:

我需要为我的 iphone 应用程序获取 wifi 的 bssid 以确定它是否已连接。我该怎么做?

需要一些指导。

【问题讨论】:

  • 想要什么..?请提供更多详细信息,然后有人可以帮助您..

标签: iphone ios reachability bssid


【解决方案1】:

下面的答案是从这个answer复制的。

在 iOS 4.1+ 上,您可以这样做:

#import <SystemConfiguration/CaptiveNetwork.h>

- (id)fetchSSIDInfo
{
    NSArray *ifs = (id)CNCopySupportedInterfaces();
    NSLog(@"%s: Supported interfaces: %@", __func__, ifs);
    id info = nil;
    for (NSString *ifnam in ifs) {
        info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
        NSLog(@"%s: %@ => %@", __func__, ifnam, info);
        if (info && [info count]) {
            break;
        }
        [info release];
    }
    [ifs release];
    return [info autorelease];
}

示例输出:

2011-03-04 15:32:00.669 ShowSSID[4857:307] -[ShowSSIDAppDelegate fetchSSIDInfo]: Supported interfaces: (
    en0
)
2011-03-04 15:32:00.693 ShowSSID[4857:307] -[ShowSSIDAppDelegate fetchSSIDInfo]: en0 => {
    BSSID = "ca:fe:ca:fe:ca:fe";
    SSID = XXXX;
    SSIDDATA = <01234567 01234567 01234567>;
}

请注意,模拟器不支持 if。在您的设备上进行测试。

【讨论】:

    【解决方案2】:

    我是这样做的:

    NSArray* interfaces = (NSArray*) CNCopySupportedInterfaces();
    
        for (NSString* interface in interfaces)
        {
            CFDictionaryRef networkDetails = CNCopyCurrentNetworkInfo((CFStringRef) interface);
            if (networkDetails)
            {
                NSLog(@"all details: %@", (NSDictionary *)networkDetails);
                NSLog(@"BSSID: %@", (NSString *)CFDictionaryGetValue (networkDetails, kCNNetworkInfoKeyBSSID));
                BSSID1 = (NSString *)CFDictionaryGetValue (networkDetails, kCNNetworkInfoKeyBSSID);
                BSSID = [[BSSID1 stringByReplacingOccurrencesOfString:@":"
                                                           withString:@""] uppercaseString];
                NSLog(@"%@",BSSID);
    
                CFRelease(networkDetails);
            }
        }
    

    【讨论】:

    【解决方案3】:

    1.添加SystemConfiguration.framework

    2.import

    3.使用下面的方法

         +(NSString *)currentWifiBSSID {
    
                NSString *bssid = nil;
                NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
                for (NSString *ifnam in ifs) {
                    NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
    
                    NSLog(@"info:%@",info);
    
                    if (info[@"BSSID"]) {
                        bssid = info[@"BSSID"];
                    }
                }
                return bssid;
            }
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-10-20
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2023-03-31
      • 2012-01-20
      • 2012-12-04
      相关资源
      最近更新 更多