Iphone Get Ssid Without Private Library

iPhone get SSID without private library

As of iOS 7 or 8, you can do this (need Entitlement for iOS 12+ as shown below):

@import SystemConfiguration.CaptiveNetwork;

/** Returns first non-empty SSID network info dictionary.
* @see CNCopyCurrentNetworkInfo */
- (NSDictionary *)fetchSSIDInfo {
NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces());
NSLog(@"%s: Supported interfaces: %@", __func__, interfaceNames);

NSDictionary *SSIDInfo;
for (NSString *interfaceName in interfaceNames) {
SSIDInfo = CFBridgingRelease(
CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName));
NSLog(@"%s: %@ => %@", __func__, interfaceName, SSIDInfo);

BOOL isNotEmpty = (SSIDInfo.count > 0);
if (isNotEmpty) {
break;
}
}
return SSIDInfo;
}

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.

iOS 12

You must enable access wifi info from capabilities.

Important
To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID. Documentation link

Swift 4.2

func getConnectedWifiInfo() -> [AnyHashable: Any]? {

if let ifs = CFBridgingRetain( CNCopySupportedInterfaces()) as? [String],
let ifName = ifs.first as CFString?,
let info = CFBridgingRetain( CNCopyCurrentNetworkInfo((ifName))) as? [AnyHashable: Any] {

return info
}
return nil

}

iPhone get a list of all SSIDs without private library

Without the use of private library (Apple80211) you can only get the SSID of the network your device is currently connected to.

How to get bssid in iPhone without private library?

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

iPhone check if a particular SSID is available

Nothing has really changed on this in the last year since the previous answer you've found. I work on the Enterprise side of the fence so I luckily don't have to worry about private APIs affecting my apps. It all boils down to Apple not wanting to allow developers to do sleeve things behind the end-users' backs.

To answer your question directly, no, you can't programmatically determine WiFi networks in range without the use of Private APIs. Sorry.

How to get Wifi SSID in iOS9 after CaptiveNetwork is deprecated and calls for Wifi name are already blocked

In the GM for iOS 9, it seems like this is enabled again. In fact, it's not even listed as deprecated in the online documentation, however the CaptiveNetwork header file does have the following:

CNCopySupportedInterfaces (void) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_8, __MAC_NA, __IPHONE_4_1, __IPHONE_9_0, CN_DEPRECATION_NOTICE);

So, it is working in the iOS 9 GM, but not sure for how long :)

How Nest iOS App could get SSID list

I have figured out how Nest App achieve this: first, nest app should connect to the AP of Nest device (which contains a wifi module, and, of course it could scan the available wifi), and then the nest device will send the wifi list to nest app.

iOS 12 and above, fetch Wifi SSID to which iPhone is connected

Additional settings are reqiured in iOS12 for getting Wifi SSID.

Summary is that Apple qoutes:

To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.

Thus, Enable Access WiFi Information for the Bundle ID in developer account. Reenable the associated provisional profiles.

In Xcode, under Targets -> Capabilities -> Access WiFi Information -> Enable it to ON.



Related Topics



Leave a reply



Submit