我正在使用NEHotspotConfigurationManager以编程方式连接wifi。 它是一个没有任何密码的开放网络 我正在使用以下代码:
if (@available(iOS 11.0, *)) {
NEHotspotConfiguration *config = [[NEHotspotConfiguration
alloc]initWithSSID:SSIDName];
[NEHotspotConfigurationManager.sharedManager applyConfiguration:config completionHandler:^(NSError* error) {
if (error) {
printf([error description]);
}
else
{
printf(@"success");
}
}];
我正在连接到一台设备的主机/访问点,但是每次遇到无法加入的错误时,由于错误为零,它会成功响应。我需要在配置中添加或在设置中添加任何东西吗?或者我缺少任何东西吗?
PS:wifi是物联网设备
-提前感谢
答案 0 :(得分:0)
这是iOS中的Apple错误。
请求经过网络扩展框架之后,一直到Wi-Fi子系统,错误都会显示给用户,而不是传递给完成处理程序。
请参阅https://forums.developer.apple.com/thread/96834
作为解决方法,您可以做什么:
有关更多信息(包括示例代码),请在这里查看我的答案:https://stackoverflow.com/a/56589229/2331445
其他提示
权利
就像评论中已经提到的@ zero3nna一样,必须添加“热点配置”权利。
检查SSID名称
确保正确拼写了SSID。我使用NanoESP IoT设备进行了测试,对于我的设备,定义如下所示:
NSString *SSIDName = @"NanoESP";
如果您使用的SSID名称不存在(例如NanoESP2
),则会出现一个对话框,提示您无法加入网络。
由于上述错误,您将在Xcode控制台中收到一条成功消息,这当然是错误的:
Wi-Fi指示器已延迟
我注意到使用正确的SSID可行,但是与我特定的IoT设备的连接需要花费一些时间才能在iOS状态栏中显示为典型图标。一段时间没有显示,请参阅屏幕截图。无论如何要检查状态,请转到iOS Settings
/ Wi-Fi
: