在iOS中以编程方式连接WiFi

5

我有关于IOS中私有API的问题。是否有某些API可以管理WiFi连接?例如,我正在使用Apple80211.framework来扫描WiFi网络,但它无法用于连接。

我的应用程序不是为App Store准备的。

4个回答

7
我们可以使用iOS 11公共API在程序中自动连接WiFi网络。您可以按照以下方式使用SSID和密码来连接WiFi。

Swift:

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

3

去年我遇到了这个问题,经过一番探索,我找到了一个有用的示例,名为SOLStumbler。要使此应用程序工作,您的设备必须越狱。我修改了 SOLStumbler 并在 github 上发布了一个示例应用程序。它使用 IPConfiguration bundle 访问 Apple80211 框架,从而允许您关联到网络。自定义的构建说明在 readme 中。

https://github.com/devinshively/wifiAssociate


现在有解决方案:https://dev59.com/yloV5IYBdhLWcg3wZOCe#47673931 - AfnanAhmad

2
不再需要使用私有API!在iOS 11中,苹果提供了一个公共API,您可以在不离开应用程序的情况下以编程方式加入WiFi网络。
您需要使用的类名为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

0
在任何可以加载配置文件的iOS版本中都可以实现:应用程序需要生成一个带有所需网络凭据的配置文件,并托管一个Web服务器,向移动版Safari提供该配置文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接