使用 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 模块/路由器发送的数据?

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)