我在对受 VPN 保护的网络进行 Web 服务调用时遇到了类似的可达性问题。
var reachability = Reachability.init(hostname: "google.com");
对我没有用,因为当有 Wifi 连接时它返回 true。
Alamofire
当对服务器进行虚拟调用时,我使用了响应
func networkIsAvailable(available: (Bool, String?) -> Void) {
var message : String = ""
DispatchQueue.main.async {
HUD.show(.progress)
Alamofire.request(Constants.baseUrl, method: .get, parameters: ["foo": "bar"])
.responseJSON(completionHandler: { (response) in
let error = response.result.error as? NSError
if error?.localizedDescription == networkAlert {
message = networkAlert
available(false, message)
} else if error?.code == cannotConnectServerCode || error?.localizedDescription == cannotConnectServerMessage {
message = cannotConnectServerMessage
available(false, anotherNetworkAlert)
} else {
available(true, nil)
}
})
}
}