7

スキャンしてwifiに接続するサンプルのobj-cコードが必要です。プライベートAPIは問題ありません。アプリをappStoreに公開するつもりはありません。cydiaでスキャンして接続できる「WiFiFoFum」というアプリを見つけましたが、残念ながらそのアプリのソースコードが見つかりません。誰かが私がそのコードを見つけることができる場所を知っていますか?ありがとう

4

2 に答える 2

7

ここで答えを見つけました:http ://code.google.com/p/iphone-wireless/issues/detail?id = 20

それは私のiPhone4v5.1.1で完全にうまく動作します。スキャンしてネットワークに接続できます。ここからプロジェクトをダウンロードできますhttps://github.com/devinshively/wifiAssociate

ここに引用があります:

Apple80211Associateはまだ機能しています(少なくとも3.1.2では)。iPhone OS 2と3の間でフレームワークの名前が変更されたため、次のように関数をバインドする必要があります。

void *airportHandle;
int     (*Apple80211Open)(void *);
int     (*Apple80211BindToInterface)(void *, NSString *);
int     (*Apple80211Close)(void *);
int     (*Apple80211Info)(void *, NSDictionary**);
int     (*Apple80211Associate)(void *, NSDictionary*, void *);
int     (*Apple80211Scan)(void *, NSArray **, void *);

libHandle       = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY);
Apple80211Open                          = dlsym(libHandle, "Apple80211Open");
Apple80211BindToInterface       = dlsym(libHandle, "Apple80211BindToInterface");
Apple80211Scan                          = dlsym(libHandle, "Apple80211Scan");
Apple80211Close                         = dlsym(libHandle, "Apple80211Close");
Apple80211Info                          = dlsym(libHandle, "Apple80211GetInfoCopy");
Apple80211Associate                     = dlsym(libHandle, "Apple80211Associate");

v2からv3への最も重要な変更は、SCAN_RSSI_THRESHOLDパラメーター(スキャン機能に使用)です。以前は正の数を取り、物理的なdBからはほど遠いもの
でしたが、現在は信号のdBを取ります。それを利用する場合は、-100に設定できます。これが切り取られたコードです(私のコードからチェリーを選んだので、そのままテストされていません):

void *airportHandle;

NSArray *keys = [NSArray arrayWithObjects:@"SCAN_RSSI_THRESHOLD", @"SSID_STR", nil];
NSArray *objects = [NSArray arrayWithObjects:[NSNumber numberWithInt:-100], ssid, nil];

NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSArray *found;


int openResult = Apple80211Open(&airportHandle);
NSLog(@"Openning wifi interface %@", (openResult == 0?@"succeeded":@"failed"));

int bindResult = Apple80211BindToInterface(airportHandle, @IF_NAME);

int scanResult = Apple80211Scan(airportHandle, &found, params);

NSDictionary *network;

// get the first network found
network = [found objectAtIndex:0];
int associateResult = Apple80211Associate(airportHandle, network,NULL);

Apple80211Close(airportHandle);
于 2012-08-23T00:59:30.623 に答える
1

Objective-Cはコンパイルされているため、スクリプト言語のようにプログラムのソースコードを取得することはできません。「WiFiFoFum」がオープンソースであるかどうかを確認でき、作成者のgithubからソースをダウンロードできる可能性があります。それ以外の場合は、ディレクトリ内のプライベートフレームワークを確認し、次のようにclass-dump-z/System/Library/PrivateFrameworksを使用してそれらからヘッダーファイルをダンプできます。

$ class-dump-z -H <private framework>

もちろん山かっこなし。

編集:

チェックしたばかりですが、オープンソースのようには見えません。

于 2012-07-30T16:33:24.757 に答える