2015-02-24 2 views
5

У меня есть NSURLSession, который работает в фоновом режиме. Я добавляю свой NSURLProtocol подкласс к NSURLsessionConfiguration.protocolClases, но override class func canInitWithRequest(request: NSURLRequest) -> Bool никогда не вызывается.Есть ли способ использовать NSURLProtocol в NSURLSession с настраиваемой конфигурацией?

Это, как я добавляю мой NSURLProtocol

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
configuration.protocolClasses!.append(MockNetwork) 
urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: operationQueue) 

Также я попытался с сессии не работает на фоне делает, но не получилось:

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
configuration.protocolClasses!.append(MockNetwork) 
urlSession = NSURLSession(configuration: configuration) 

Как это не работает Я просто попытался:

urlSession = NSURLSession.sharedSession() 

И называя это в моем AppDelegate

NSURLProtocol.registerClass(MockNetwork) 

Это действительно работает, что я делаю неправильно ?!

+1

Это делает работу, что я делаю не так? Ответ: Nothing :) –

+0

, но я не могу заставить его работать при использовании настраиваемой конфигурации в фоновом режиме ... это заставляет меня CRAZY – Andres

ответ

9

Проведя еще несколько часов, пытаясь выяснить, почему это не работает, я нашел способ сделать это.

Вместо:

configuration.protocolClasses?.append(MockNetwork.self) 

Do:

var protocolClasses = [AnyClass]() 
protocolClasses.append(MockNetwork.self) 

let configuration = URLSessionConfiguration.default 
configuration.protocolClasses = protocolClasses 

После этого изменить все работало и не надо URLProtocol.registerClass(MockNetwork.self)

+0

Вам все равно придется регистрировать свой собственный протокол через NSURLProtocol.registerClass (MockNetwork) в случае вы пытались перехватить запросы веб-просмотра. – iOSAddicted

+0

protocolClasses использует 'AnyClass' не' AnyObject'. Вместо этого ваш массив должен быть '[AnyClass]()'. –

Смежные вопросы