他のすべての通話に通常のインターネット接続を提供しながら、一部の通話にテスト データを提供するためにカスタムNSURLProtocol
をに追加しようとしています。セッションはプロジェクトに含まれるライブラリに存在するため、セッション構成のにNSURLSession
を追加してこれを行う必要があります。NSURLProtocol
protocolClasses
true
なんらかの理由で、カスタム プロトコルが呼び出しを返すことによって要求を受け取ったとき、私のセットアップはテスト データを配信しますが、canInitWithRequest
他のすべての要求 (それが返されたとき) では、まだカスタム プロトコルの背後にfalse
あるデフォルト プロトコルが要求を取得し、呼び出しに戻るprotocolClasses
ことさえありますが、要求をインターネットに送信することはなく、代わりに 30 秒後に要求タイムアウトを配信します。からカスタム プロトコルを削除すると、すべて正常に動作します。もちろん、テスト データだけが提供されなくなります。true
canInitWithRequest
protocolClasses
これは、プロトコルのインストールに使用するコードです。
NSURLSessionConfiguration* sessionConfiguration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
NSMutableArray* protocols = [NSMutableArray arrayWithArray:sessionConfiguration.protocolClasses];
[protocols insertObject:[MyProtocol class] atIndex:0];
sessionConfiguration.protocolClasses = protocols;
mySession = [NSURLSession sessionWithConfiguration:sessionConfiguration];
カスタム プロトコルを に登録すると[NSURLProtocol registerClass:[MyProtocol class]]
、フォールスルーは機能しますが、記載されているように、プロジェクトでこのアプローチを使用することはできません。
これが正しく機能しない理由について何か考えはありますか?