1

我正在使用 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是物联网设备

-提前致谢

4

1 回答 1

2

这是 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

延迟 Wi-Fi 指示灯

于 2019-08-09T21:24:01.247 回答