आप dlfcn.h लाइब्रेरी का उपयोग कर Apple80211 निजी ढांचे का उपयोग करना चाह सकते हैं। एक iPhone उदाहरण यहां पाया जा सकता:
http://www.csse.uwa.edu.au/~chris/iphone/APlogger/
स्रोत फ़ाइल डाउनलोड करें और स्कैनर मॉड्यूल की जांच।
सारांश में, आप कुछ इस तरह के साथ ऊपर आ जाएगा:
#define IF_NAME "en0"
#include <dlfcn.h>
- (void)performScan
{
int (*open)(void *);
int (*bind)(void *, NSString *);
int (*close)(void *);
int (*scan)(void *, NSArray **, void *);
void *libHandle;
void *airportHandle;
libHandle = dlopen("/System/Library/Frameworks/Preferences.framework/Preferences", RTLD_LAZY);
open = dlsym(libHandle, "Apple80211Open");
bind = dlsym(libHandle, "Apple80211BindToInterface");
scan = dlsym(libHandle, "Apple80211Scan");
close = dlsym(libHandle, "Apple80211Close");
open(&airportHandle);
bind(airportHandle, @IF_NAME);
NSArray *found;
NSDictionary *params = [[NSDictionary alloc] init];
scan(airportHandle, &found, params);
int nnw = [found count];
for(int i=0 ; i < nnw ; i++) {
NSDictionary *nw = [found objectAtIndex:i];
NSString *ssid = [self fixSSID:nw];
// RSSI indicates signal strength
int rssi = [[nw objectForKey:@"RSSI"] intValue];
}
// Cleanup
close(airportHandle);
dlclose(libHandle);
}
-(NSString *)fixSSID:(NSDictionary *)nw
{
if ([[nw objectForKey:@"HIDDEN_NETWORK"] boolValue])
return @"<hidden>";
else
return [nw objectForKey:@"SSID_STR"];
}
ध्यान दें कि अगर आप अपने iOS एप्लिकेशन में निजी चौखटे का उपयोग करें, आप एप्लिकेशन स्टोर पर उन्हें प्रकाशित करने के लिए सक्षम नहीं होगा (एप्पल को अस्वीकार कर देंगे आपका ऐप क्योंकि Apple80211 ढांचे के लिए कोई सार्वजनिक दस्तावेज नहीं है)। लेकिन चूंकि आपका प्रश्न ओएसएक्स विकास के संबंध में है, यह आपके मामले के लिए लागू नहीं होता है।
उम्मीद है कि यह मदद करता है।
फ़ारज़ान डोरूडगर
क्या आपके पास कोई भाग्य है? –
दुर्भाग्य से, मैंने नहीं किया। आपके पास कोई विचार है? –
आप CWInterface ऑब्जेक्ट पर rssi प्रॉपर्टी का उपयोग करने का प्रयास कर सकते हैं। यह "इंटरफेस के लिए वर्तमान कुल सिग्नल शक्ति संकेत (आरएसएसआई) माप (डीबीएम) दिखाता है।" यह सैंडबॉक्स पर्यावरण में काम करता है। –