使用NEHotspotConfiguration连接网络时总是收到“无法加入”

问题描述

我正在通过Xamarin实现一个APP,它将强制iPhone连接到特定的SSID。

这是我的代码

var config = new NEHotspotConfiguration(SSID,Password,isWep: false)
config.JoinOnce = true;
var tcs = new taskcompletionsource<NSError>();
NEHotspotConfigurationManager.SharedManager.ApplyConfiguration(config,err => tcs.SetResult(err));

有两个测试结果

假设我要连接的目标SSID为“ SSID-A”

  1. 我在iOS系统页面删除了“ SSID-A”的记录。然后将此APP部署到手机上。 我在上面的代码中输入了正确的SSID /密码。 系统弹出消息“无法加入”。无法连接到此SSID。

  2. 我转到iOS系统页面。手动连接到“ SSID-A”。检查连接是否完成。 然后我将手机连接到其他SSID。然后回到APP。 这次。可以。

为什么这里不一样?

该如何解决这个问题?

谢谢!

解决方法

从苹果文档的applyConfiguration:completionHandler:中,我们可以看到以下分歧:

仅在附近发现该方法时,此方法才会尝试加入该网络。另外,由于Hotspot 2.0发现机制可能会明显延迟,因此该方法不会尝试加入Hotspot 2.0网络。

因此,加入一次似乎无法标记其是否有效。我们可以尝试删除此行,或按如下所示设置false

config.JoinOnce = false;

此外,这似乎是Apple的iOS 13中的错误。您可以看看this discussion

,

如果有一天它对某人有所帮助,我突然遇到了一个问题,即我的设备无法加入以前工作正常的网络。

为了测试错误情况,我尝试连接到安全网络而不将密码添加到 let marker = new google.maps.Marker({ position: { lat: lat(),lng: lng() },label: `${labelName}`,map: map.value,draggable: true }); marker.Circle = new google.maps.Circle({ center: marker.getPosition(),strokeColor: "#3B82F6",strokeOpacity: 0.8,strokeWeight: 2,fillColor: "#3B82F6",fillOpacity: 0.35,radius: 100,editable: true }) marker.Circle.bindTo('center',marker,'position'); map.value.circles.push(marker) 。这次加入尝试失败,但随后在将密码放回设备后甚至不会显示加入请求对话框,只会失败并显示“无法加入”错误。

我最终尝试了另一部测试手机,效果很好,所以这似乎是设备本身的问题。我尝试重置设备的网络设置,但这没有任何区别。

解决方法是进入设备的 wifi 设置,手动加入网络,返回我的应用程序,尝试加入,在设备设置中断开网络连接,然后忘记网络。之后,它在每次后续尝试中都运行良好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...