dlfcn.h 라이브러리를 사용하여 Apple80211 개인 프레임 워크를 사용할 수 있습니다. 아이폰의 예는 여기에서 찾을 수 있습니다 :
http://www.csse.uwa.edu.au/~chris/iphone/APlogger/
소스 파일을 다운로드하고 스캐너 모듈을 조사합니다. 요약
,이 같은 결과가 올 것이다 : 당신이 당신의 iOS 앱에서 개인 프레임 워크를 사용하는 경우, 당신은 앱 스토어에 게시 할 수 없습니다 것을
가
#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"];
}
주 (애플은 거부합니다 Apple80211 프레임 워크에 대한 공개 문서가 없기 때문에 귀하의 애플 리케이션). 그러나 귀하의 질문은 OSX 개발에 관한 것이므로 귀하의 경우에는 적용되지 않습니다.
희망이 있습니다.
Farzan Doroodgar
행운이 있었나요? –
불행히도, 나는하지 않았다. 아이디어가 있습니까? –
CWInterface 객체에서 rssi 속성을 사용해 볼 수 있습니다. 인터페이스에 대한 현재 집계 수신 신호 강도 표시 (RSSI) 측정 값 (dBm)을 보여줍니다. ". 샌드 박스 환경에서 작동합니다. –