检查互联网连接是不是可用[重复]
Posted
技术标签:
【中文标题】检查互联网连接是不是可用[重复]【英文标题】:Check whether internet connection is available [duplicate]检查互联网连接是否可用[重复] 【发布时间】:2015-09-28 07:44:44 【问题描述】:我正在编写一个函数来检查用户设备是否连接到互联网。如果不是,它会通过警告框警告用户。
最初我使用以下完美运行的方法:
var data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: &response) as NSData?
但这在 iOS 9 中已被弃用。
所以我将代码更改为以下内容。
import Foundation
import SystemConfiguration
public class Reachability
class func isConnectedToNetwork()->Bool
var Status:Bool = false
let url = NSURL(string: "https://google.com/")
var response: NSURLResponse?
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "HEAD"
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
request.timeoutInterval = 10.0
let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
let task = session.dataTaskWithRequest(request, completionHandler: data, response, err -> Void in
if let httpResponse = response as? NSHTTPURLResponse
if httpResponse.statusCode == 200
Status = true
)
task.resume()
return Status
问题是它总是说没有互联网连接,这显然是错误的。这意味着“布尔”总是错误的。我做错了什么?
提前致谢。
【问题讨论】:
请看下面的答案。 ***.com/a/30743763/1180206 @Paulw11 感谢您的回复。有关如何解决此问题的任何建议? 【参考方案1】:使用可达性或其他一些测试是您应该如何满足您的实际要求。
但是,为了回答您的问题,它总是返回 false
的原因是数据任务是异步的 - 也就是说,它将独立于函数调用完成,因此当它完成并尝试将状态设置为true
,函数已经返回false
【讨论】:
【参考方案2】:推荐的方式是发送你真正要发送的请求,判断是成功还是失败,如果失败了,判断失败的原因。没有办法可靠地检测是否存在连接。
【讨论】:
以上是关于检查互联网连接是不是可用[重复]的主要内容,如果未能解决你的问题,请参考以下文章