|Availabile||3.0 – present|
MobileWiFi is the framework that manages WiFi functionality on iOS. It replaces the obsolete Apple80211 framework. MobileWiFi.framework has a C API, and a unfinished reverse-engineered header is available here.
Note: Your program needs the com.apple.wifi.manager-access entitlement to use any of the WiFiManager functions.
Retrieving a list of known networks
#include <MobileWiFi.h> WiFiManagerRef manager = WiFiManagerClientCreate(); CFArrayRef networks = WiFiManagerClientCopyNetworks(manager); NSLog(@"networks: %@", networks); CFRelease(manager); CFRelease(networks);
Getting the WiFi signal strength
#include <math.h> #include <MobileWiFi.h> // We're not using the manager here but you need to create one for this code to work. WiFiManagerRef manager = WiFiManagerClientCreate(); CFArrayRef devices = WiFiManagerClientCopyDevices(); WiFiDeviceClientRef client = (WiFiDeviceClientRef)CFArrayGetValueAtIndex(devices, 0); CFNumberRef RSSI = (CFNumberRef)WiFiDeviceClientCopyProperty(client, kWiFiScaledRSSIKey); float strength; CFNumberGetValue(RSSI, kCFNumberFloatType, &strength); strength = strength * 100; // Round to the nearest integer. strength = ceilf(strength); // Convert to a negative number. strength = strength * -1; NSLog(@"WiFi signal strength: %f dBm", strength); CFRelease(RSSI); CFRelease(devices); CFRelease(manager);