我的问题是关于 IOS 中的私有 API。是否有一些 API 来管理 WiFi 连接?例如,我正在使用 Apple80211.framework 来扫描 WiFi 网络,但它无法用于连接。
我的应用不适用于应用商店。
我们可以在 iOS 11 公共 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 框架,该框架允许您关联到网络。自述文件包含自定义构建说明。
不再需要私有 API!在 iOS 11 中,Apple 提供了一个公共 API,您可以使用它以编程方式加入 WiFi 网络,而无需离开您的应用程序。
您需要使用的类称为NEHotspotConfiguration
.
要使用它,您需要Hotspot
在您的 App Capabilities 中启用该功能(添加功能)。快速工作示例:
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 中都可以加载配置文件:应用程序需要生成具有所需网络凭据的配置文件,并托管将配置文件提供给 Mobile Safari 的 Web 服务器。