MobileWiFi.framework | |
Private Framework | |
---|---|
Availabile | 3.0 – present |
Headers | [headers.cynder.me] |
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);