私の質問は、IOSのプライベートAPIについてです。WiFi接続を管理するためのAPIはありますか?たとえば、Apple80211.frameworkを使用してWiFiネットワークをスキャンしていますが、接続には使用できません。
私のアプリはappstore用ではありません。
iOS11パブリックAPIの後にプログラムでwifiネットワークに接続できます。次のようにSSIDとパスワードを使用してwifiに接続できます。
迅速
var configuration = NEHotspotConfiguration.init(ssid: "wifi name", passphrase: "wifi password", isWEP: false)
configuration.joinOnce = true
NEHotspotConfigurationManager.shared.apply(configuration) { (error) in
if error != nil {
//an error occurred
print(error?.localizedDescription)
}
else {
//success
}
}
忘れないでくださいimport NetworkExtension
。
私は昨年この問題に遭遇し、かなり掘り下げた後、SOLStumblerと呼ばれる有用な例に出くわしました。このアプリが機能するには、デバイスがジェイルブレイクされている必要があります。SOLStumblerを変更し、githubにサンプルアプリを投げました。IPConfigurationバンドルを使用してApple80211フレームワークにアクセスし、ネットワークに関連付けることができます。readmeには、カスタムビルド手順が含まれています。
プライベートAPIはもう必要ありません!iOS 11では、Appleは、アプリを離れることなくプログラムでWiFiネットワークに参加するために使用できるパブリックAPIを提供しました。
使用する必要のあるクラスはと呼ばれNEHotspotConfiguration
ます。
Hotspot
これを使用するには、アプリ機能で機能を有効にする必要があります(機能の追加)。簡単な作業例:
NEHotspotConfiguration *configuration = [[NEHotspotConfiguration
alloc] initWithSSID:@“SSID”];
configuration.joinOnce = YES;
[[NEHotspotConfigurationManager sharedManager] applyConfiguration:configuration completionHandler:nil];
これにより、ユーザーは「SSID」WiFiネットワークに参加するように求められます。ユーザーがアプリを離れるまで、WiFiに接続されたままになります。
これは、実際のデバイスでこのコードを実行して機能させるために必要なシミュレーターでは機能しません。
詳細はこちら: https ://developer.apple.com/documentation/networkextension/nehotspotconfiguration
構成プロファイルをロードできるiOSのどのバージョンでも可能です。アプリは、目的のネットワーククレデンシャルを使用してプロファイルを生成し、モバイルSafariにプロファイルを提供するWebサーバーをホストする必要があります。