使用 NEHotspotConfigurationManager 连接到没有互联网的 wifi
Posted
技术标签:
【中文标题】使用 NEHotspotConfigurationManager 连接到没有互联网的 wifi【英文标题】:Using NEHotspotConfigurationManager to connect to a wifi with no internet 【发布时间】:2019-04-23 19:50:18 【问题描述】:我的 ios 设备无法连接到 wifi,但无法连接到互联网。由于该应用程序用于控制网络中的设备,并且没有可用的外部互联网连接,因此设计上缺少互联网连接。
我使用的 iPhone 是 12.1 版。 Xamarin.IOS 是 11.14 和 Xamarin.Forms 3.3.0
连接成功,我得到提示
“appname”想要加入 Wi-Fi 网络“ssid”?
但在选择加入后没有任何反应。当我转到设置 - Wifi 页面后,我得到一个标题为登录的页面,该页面只是说路由器(华硕)已关闭。如果我选择取消,我可以选择“在没有 Internet 的情况下使用”,然后我就可以连接了。
即使在建立连接后,我仍然无法连接到网络中的设备(通过 ping 它),不确定这是否仍然是同一个问题。
应用程序是使用 Xamarin.Forms 编写的,这里是创建连接的部分。
public void ConnectToWifi(string ssid, string password)
using (var _wifiManager = new NEHotspotConfigurationManager())
var wifiConfig = new NEHotspotConfiguration(ssid, password, false)
JoinOnce = true
;
_wifiManager.ApplyConfiguration(wifiConfig, error => CompletionHandler(error, ssid));
private void CompletionHandler(NSError error, string ssid)
if (error != null)
Console.WriteLine($"Error while connecting to WiFi network ssid: error");
【问题讨论】:
对于 XCode 10,请确保您设置了 AccessWiFi 授权,而不是只有您能够访问 SSID 名称。你可以参考这个博客mobiarch.wordpress.com/2016/11/02/working-with-nehotspothelper 谢谢。 iOS 似乎确实有一个关于如何在没有互联网连接的情况下处理连接到 WiFi 网络的错误/功能。我已提出使用网络扩展的请求,并将尝试在此处发表评论。 对 API 的请求被拒绝,所以在他们修复错误之前我无法继续。 【参考方案1】:我发现了这个问题(一种解决方法)。这就是 iOS 处理华硕 WAN 下浏览器重定向通知的方式。它以浏览器重定向响应,iOS 认为这是一个登录。我必须在路由器管理设置中将 启用 WAN 关闭浏览器重定向通知 设置为 false,然后它才能正常工作。如果我们没有路由器的管理权限,问题仍然存在。
【讨论】:
以上是关于使用 NEHotspotConfigurationManager 连接到没有互联网的 wifi的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 应用程序上接收连接的 WiFi 模块/路由器发送的数据?