前回、iPhoneでWifi情報を取得するという記事を書きましたが、記述内容そのままで動作していたものが、iOS4になって以降確認していなかったので、改めて動作確認したところ、取得出来ていないことが判明したため、追記することにしました。

内容はほぼ前回と同じ内容ですが、apple80211Scan()関数を付け加えWifiカードにネットワークのスキャンをさせなければ情報が取得されないようです。
apple80211Scan(エアポートの場所, 情報保存場所, スキャン設定情報)
な感じのパラメータらしいです。

NSDictionary *nsparam
= [NSDictionary dictionaryWithObjectsAndKeys(id)kCFBooleanFalse,CFSTR("SCAN_MERGE"),nil];
CFDictionaryRef parameters = (CFDictionaryRef)nsparam;
apple80211Scan(airportHandle, &networks, parameters);

上記を追記すればiPhone4での動作も確認しました。
ついでにapple80211Close(airportHandle)で閉じます。

6 Comments:

  1. gen さんのコメント...
    このコメントは投稿者によって削除されました。
  2. gen さんのコメント...

    すいません、初心者で質問です。
    wifiの情報をiPhone端末で表示させたいのですが、MobileWiFi.frameworkは必要でしょうか?
    フレームワークの追加に無かったのでお尋ねしました。
    お時間ありましたら、ご回答宜しくお願い致します。

    gen  

  3. ryo さんのコメント...

    >genさん
    WiFiManagerが必要になります。
    予想ですが、MobileWiFiはテザリングなどに使われるものではないかと。  

  4. 栗城基宏 さんのコメント...

    これは、Appleの審査には通るものでしょうか?
    プライベートAPIのような気がするので、
    審査は通らない気がするのですが、間違っていますか?  

  5. ryou ishihara さんのコメント...

    >栗城さん
    今となっては審査は通らないし,
    そもそもMobileWifi自体がiOS5から利用できなくなりました.
     

  6. ryou ishihara さんのコメント...
    このコメントは投稿者によって削除されました。