【发布时间】:2017-02-01 08:29:07
【问题描述】:
经过难以置信的咬牙切齿后,我终于有了一种方法,可以成功检测 iOS 上是否启用了 WiFi,而不管它是否连接。这样的东西至少有几个用途,我不认为这违反了 Apple Law(tm) 的精神或文字。
但是,它很丑陋,可能不会永远有效。截至 2017 年 1 月 31 日,它目前适用于 iOS 10.2.1。我将把我的答案放在下面,希望有人可以改进它。我对可达性(不满足要求)、CaptiveNetwork、HotspotHelper、SCNetworkConfiguration、Xamarin 的 System.Net.NetworkInterface 等进行了大量研究。据我所知,这就是它真正有效的方法。
【问题讨论】:
-
CaptiveNetwork,顺便说一句,对于确定设备是否有 WiFi很有用: public bool DeviceHasWifi() { string[] sifa; CaptiveNetwork.TryGetSupportedInterfaces(out sifa); // 如果至少有一个接口支持强制网络,那么它有 WiFi 返回 (0 != sifa.Length); }
-
永远不需要这样的东西。如果您的应用程序需要 WIFI,只需将其写在您的应用程序描述或应用程序的帮助页面上。检查网络类型不是您的工作。
-
虽然我同意 大多数 应用程序不需要这样的东西,但您对“从不”的概括是没有根据的
-
我还是坚持从不。如果您的应用在没有 Wifi 的情况下无法连接,只需显示连接错误和帮助页面。从来没有任何用于检查 WIFI 与 Internet 的应用程序。
-
我有一个用例,我不是您提到的简单的常见场景,我保证您没有想到,并且在对这个问题进行实际研究我遇到过其他人。