Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198
MobileWiFi.framework: Difference between revisions - iPhone Development Wiki

MobileWiFi.framework: Difference between revisions

From iPhone Development Wiki
mNo edit summary
No edit summary
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
Headers [headers.cynder.me]


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