0

我正在通过 Xamarin 实现一个应用程序,它将强制 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。这次。有用。

为什么这里不一样?

我能做些什么来更多地研究这个问题来解决这个问题?

谢谢!

4

2 回答 2

1

从apple 文档的applyConfiguration:completionHandler:中,我们可以看到以下讨论:

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

因此,Join once似乎无法标记确定它是否有效。我们可以尝试删除此行,或设置false如下:

config.JoinOnce = false;

此外,这似乎是 Apple 的 iOS 13 中的一个错误。你可以看看这个讨论

于 2020-10-22T08:29:13.750 回答
0

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

为了测试错误情况,我尝试连接到安全网络而不将 passphase 添加到NEHotspotConfiguration. 此尝试加入失败,但随后在将 passphase 放回设备后甚至不会显示加入请求对话框,只会因“无法加入”错误而失败。

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

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

于 2021-06-24T17:40:54.857 回答