Difference between revisions of "MobileWiFi.framework"

From iPhone Development Wiki
Jump to: navigation, search
m
Line 6: Line 6:
 
'''MobileWiFi''' is the framework that manages WiFi functionality on iOS. It replaces the obsolete '''Apple80211''' framework.
 
'''MobileWiFi''' is the framework that manages WiFi functionality on iOS. It replaces the obsolete '''Apple80211''' framework.
  
'''Note''': Your program needs the ''com.apple.wifi.manager-access'' entitlement to use '''any''' of the WiFiManager functions.
+
* '''Note''': Your program needs the ''com.apple.wifi.manager-access'' entitlement to use '''any''' of the WiFiManager functions.
  
 
== Retrieving a list of known networks ==
 
== Retrieving a list of known networks ==

Revision as of 20:30, 7 May 2013

MobileWiFi.framework
Private Framework
Availabile 3.0 – present


MobileWiFi is the framework that manages WiFi functionality on iOS. It replaces the obsolete Apple80211 framework.

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

Scanning for nearby networks

#include <MobileWiFi.h>
 
WiFiManagerRef _manager;
WiFiDeviceClientRef _client;

int main()
{
    _manager = WiFiManagerClientCreate(kCFAllocatorDefault, 0);

    CFArrayRef devices = WiFiManagerClientCopyDevices(_manager);
    _client = (WiFiDeviceClientRef)CFArrayGetValueAtIndex(devices, 0);

    WiFiManagerClientScheduleWithRunLoop(_manager, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
    WiFiDeviceClientScanAsync(_client, (CFDictionaryRef)[NSDictionary dictionary], scanCallback, 0);

    CFRelease(devices);
}

void scanCallback(WiFiDeviceClientRef device, CFArrayRef results, WiFiErrorRef error, void *token)
{
    NSLog(@"Networks: %@", results);
    WiFiManagerClientUnscheduleFromRunLoop(_manager);
    CFRelease(_manager);
}

References