dlfcn.hライブラリを使用してApple80211プライベートフレームワークを使用したい場合があります。 iphoneの例では、ここで見つけることができます:
http://www.csse.uwa.edu.au/~chris/iphone/APlogger/
は、ソースファイルをダウンロードし、スキャナモジュールを調査します。要約すると
、あなたはこのような何かを思い付くだろう:(Appleは拒否されますあなたがあなたのiOSアプリケーションでプライベートなフレームワークを使用する場合は、App Storeでそれらを公開することができませんことを
#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)"をインターフェイスに表示します。 "これは、サンドボックス環境で動作します。 –