2

ここからSOLStumblerを使用しようとしています:MobileWiFi.frameworkにアクセスして使用してwifiネットワークをスキャンします。これはアップルではサポートされていないことは承知していますが、教育目的および実験用です。次のファイルをアプリケーションに追加すると、正常にコンパイルされますが、常にエラーコードで終了します。(「.m」ファイルの一部として。)これを機能させる方法を知っている人はいますか?

SOLStumbler.h

SOLStumbler.m

SOLStumbler.mのこの部分は、常に1文字のエラーを出力します。通常eですが時々u

libHandle = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY);

    char *error;
    if (libHandle == NULL && (error = dlerror()) != NULL)  {
            NSLog(@"%c",error);
            exit(1);
    }

私のViewControllerコード:

#import "SOLStumbler.h"

-(void)viewDidLoad{
    SOLStumbler *networksManager = [[SOLStumbler alloc] init];      
    [networksManager scanNetworks]; 
    NSLog(@"%@", [networksManager description]);
    [networksManager release];  
}
4

1 に答える 1

2

使用SOLStumblerしようとしているコードはかなり古いです。このようなもの ( WiFiManager など) は、プライベート フレームワークにあります。つまり、Apple は、OS のバージョンからバージョンへと変更したり移動したりできるし、多くの場合そうするでしょう。

現在iOS 5を使用していると思いますか?

私は iOS 5 フォンにログインしました。

/System/Library/SystemConfiguration/WiFiManager.bundle/

存在しません。それがあなたのコードが失敗する理由です。

この便利なスレッドをご覧ください。

IPConfigurationフレームワークで同等の (?) 関数を見つけることができるようになりました。このコードを試してください:

libHandle = dlopen("/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration", RTLD_LAZY);

ジェイルブレイクされた iOS 5.0.1 電話で実行したところ、動作しました (dylib をロードし、Apple80211 関数のいくつかを見つけました)。私がリンクしたそのスレッドから、完全に機能させるには、ジェイルブレイクされた電話の/Applicationsにこれをインストールする必要があるようです。または、サンドボックス化されたアプリにいくつかの資格を追加する必要があるかもしれません。

于 2012-07-28T00:32:52.533 に答える