【发布时间】:2013-03-13 13:59:47
【问题描述】:
我的问题是关于 IOS 中的私有 API。是否有一些 API 来管理 WiFi 连接?例如,我正在使用 Apple80211.framework 扫描 WiFi 网络,但它无法用于连接。
我的应用不适用于应用商店。
【问题讨论】:
我的问题是关于 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。
要使用它,您需要在您的 App Capabilities (Adding Capabilities) 中启用 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 中都可以加载配置文件:应用需要生成具有所需网络凭据的配置文件,并托管一个将配置文件提供给 Mobile Safari 的网络服务器。
【讨论】: