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

opf*_*fer 10 objective-c swift alamofire

我正在和Alamofire合作.跟随Mattt 对GitHub上一个已关闭问题的评论,我试图建立一个NSURLProtocol基于机制来设置UIApplication.sharedApplication().networkActivityIndicatorVisible标志.

但是,在将我的自定义协议注册到Alamofire的底层之后,NSURLSessionConfiguration由于Alamofire没有暴露其大部分SessionDelegate课程,因此我很快陷入困境.

是否有一种简单的方法来通知自定义NSURLProtocol请求已经完成而没有复制我内部已有的Alamofire实现NSURLProtocol

小智 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
        }
    }
Run Code Online (Sandbox Code Playgroud)

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