我需要区分连接到蜂窝网络和 WiFi 的 iPhone/iPad 用户。在SCNetworkReachabilityFlag .isWWAN下,Apple 表示:
The absence of this flag does not necessarily mean that a connection will never pass over a cellular network. If you need to robustly prevent cellular networking, read Avoiding Common Networking Mistakes in Networking Overview.
这意味着,如果启用此标志,则用户很可能通过蜂窝网络进行连接,但不能保证。我读过《避免常见的网络错误》,但这没有帮助。
我如何才能 100% 确定用户在(或不在)蜂窝网络上?
我的代码如下所示:
let reachability = SCNetworkReachabilityCreateWithName(nil, "localhost")
var flags = SCNetworkReachabilityFlags()
if let reachability = reachability {
SCNetworkReachabilityGetFlags(reachability, &flags)
}
let isConnectedToCellular = flags.contains(.isWWAN)
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您使用此代码,请确保在后台线程而不是主线程上调用它。