Question

I need to get the bssid of the wifi for my iphone application to determine whether it is connected. How do I do it?

Need some guidance on how to do it.

Was it helpful?

Solution 3

I did it this way:

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);
        }
    }

OTHER TIPS

Answer below is copied from this answer.

On iOS 4.1+, you can do this:

#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];
}

Example output:

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>;
}

Note that no ifs are supported on the simulator. Test on your device.

1.Add SystemConfiguration.framework

2.import < SystemConfiguration/CaptiveNetwork.h>

3.use the below Method

     +(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;
        }

Hope this helps

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top