使用NEHotspotConfigurationManager连接到没有互联网的wifi

时间:2018-11-21 09:19:58

标签: ios iphone xamarin.forms

在iOS设备上没有互联网连接的情况下,我无法连接到wifi。由于该应用程序用于控制网络中的设备,并且没有可用的外部互联网连接,因此设计上缺少Internet连接。

我正在使用的iPhone版本为12.1。 Xamarin.IOS是11.14,Xamarin.Forms 3.3.0

连接成功,提示

  

“ appname”想加入Wi-Fi网络“ ssid”吗?

,但是选择“加入”后没有任何反应。当我转到“设置-Wifi”页面后,出现标题为“登录”的页面,并且该页面仅显示路由器(asus)已关闭。如果选择“取消”,则可以选择“不使用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}");
        }
    }

1 个答案:

答案 0 :(得分:0)

我发现了问题(解决方法)。这就是iOS处理华硕WAN向下浏览器重定向通知的方式。它以浏览器重定向作为响应,iOS认为这是登录名。我必须在路由器管理设置中将启用WAN向下浏览器重定向通知设置为false,然后它才能正常工作。如果我们没有路由器的管理权限,问题仍然存在。