Мне нужно различать пользователя iPhone / iPad, подключенного к сотовой связи, и Wi-Fi. Под 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)
РЕДАКТИРОВАТЬ:
Если вы используете этот код, обязательно вызовите его в фоновом потоке, а не в основном потоке.