检查是否有可用的互联网连接。

14 浏览
0 Comments

检查是否有可用的互联网连接。

我正在编写一个函数,检查用户的设备是否连接到互联网。如果没有连接,它会通过一个弹窗警告用户。\n最初我使用了下面的代码,这个代码完美地工作:\nvar data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: &response) as NSData?\n\n但这在iOS 9中已经被弃用。\n所以我将我的代码改成了下面的样子。\nimport Foundation\nimport SystemConfiguration\npublic class Reachability {\nclass func isConnectedToNetwork()->Bool{\n var Status:Bool = false\n let url = NSURL(string: \"https://google.com/\")\n var response: NSURLResponse?\n let request = NSMutableURLRequest(URL: url!)\n request.HTTPMethod = \"HEAD\"\n request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData\n request.timeoutInterval = 10.0\n let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()\n let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)\n let task = session.dataTaskWithRequest(request, completionHandler: {data, response, err -> Void in\n if let httpResponse = response as? NSHTTPURLResponse {\n if httpResponse.statusCode == 200 {\n Status = true\n }\n } \n })\n task.resume()\n return Status\n}}\n\n问题是它总是说没有互联网连接,显然是错误的。这意味着\"Bool\"始终为false。我做错了什么?\n提前感谢。

0
0 Comments

出现原因:

- 想要检测网络连接是否可用,但没有可靠的方法来实现。

解决方法:

- 推荐的方法是发送实际想要发送的请求,并确定请求是成功还是失败,如果失败,则确定失败的原因。

- 无法可靠地检测是否存在连接。

0
0 Comments

检查互联网连接是否可用的原因是数据任务是异步的,即它会独立于函数调用完成。因此,当数据任务完成并尝试将状态设置为true时,函数已经返回了false。要解决这个问题,可以使用回调函数或闭包来处理异步任务的结果。

0