小编Ste*_*ick的帖子

使用 NSURLSession 后台配置检测 DNS 故障?

使用NSURLSession后台配置时是否可以检测 DNS 查找失败?

如果我使用默认配置和完成处理程序,则错误参数中会报告 DNS 解析失败。但是,如果我使用后台配置,则永远不会报告失败并且永远不会调用委托方法。

NSURLSessionTaskDelegate协议的 Apple 文档说:

服务器错误不会通过 error 参数报告。您的委托通过错误参数收到的唯一错误是客户端错误,例如无法解析主机名或连接到主机。

这表明我应该在那里看到 DNS 失败消息。下面的代码说明了这种行为。我已经在 iOS 8.4 和 9 设备和模拟器上进行了测试,并搜索了开发论坛、SO 和使用流行的搜索引擎,但结果是空的。我确定我一定遗漏了一些非常简单的东西。

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, NSURLSessionTaskDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


        let bgsesh = NSURLSession(configuration: NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("foobarbazqwux"), delegate: self, delegateQueue: nil)
        let dfsesh = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration(), delegate: nil, delegateQueue: nil)

        let url = NSURL(string: "http://foobarbaz.qwzx")!
        let a = dfsesh.downloadTaskWithURL(url) { (url:NSURL?, resp:NSURLResponse?, err:NSError?) …
Run Code Online (Sandbox Code Playgroud)

ios nsurlsession swift ios8 ios9

6
推荐指数
1
解决办法
864
查看次数

标签 统计

ios ×1

ios8 ×1

ios9 ×1

nsurlsession ×1

swift ×1