问题描述
我正在通过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”
-
我在iOS系统页面中删除了“ SSID-A”的记录。然后将此APP部署到手机上。 我在上面的代码中输入了正确的SSID /密码。 系统弹出消息“无法加入”。无法连接到此SSID。
-
我转到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 设置,手动加入网络,返回我的应用程序,尝试加入,在设备设置中断开网络连接,然后忘记网络。之后,它在每次后续尝试中都运行良好。