自定义NSURLProtocol以显示/隐藏NetworkActivityIndi​​cator

时间:2014-12-11 12:15:45

标签: objective-c swift alamofire

我正在与Alamofire合作。跟进Mattt在GitHub上closed issues之一的评论,我尝试了一个基于NSURLProtocol的机制来设置UIApplication.sharedApplication().networkActivityIndicatorVisible标志。

但是,在使用Alamofire的基础NSURLSessionConfiguration注册我的自定义协议后,由于Alamofire没有暴露其SessionDelegate类的大部分内容,因此我很快陷入困境。

是否有一种简单的方法可以通知自定义NSURLProtocol请求已完成,而无需在NSURLProtocol内复制已有的Alamofire实现?

1 个答案:

答案 0 :(得分:0)

另一种方法(不实现NSURLProtocol-way)将创建一个具有 executeRequest 方法的API:

func executeRequest(method: Alamofire.Method, url: NSURL, parameters: [String: String]?, headers: [String : String]?) {
        // Show activity indicator on status bar
        UIApplication.sharedApplication().networkActivityIndicatorVisible = true

        let request = manager.request(method, url, parameters: parameters, encoding: .JSON, headers: headers)
            .responseJSON {
                response in
                ...

                // Hide activity indicator on status bar
                UIApplication.sharedApplication().networkActivityIndicatorVisible = false
        }
    }

当然,您的所有请求都必须使用新创建的API执行。