2017-06-19 3 views
0

は、私は私が、単一のオブジェクトレベルでインターセプタを追加するために管理しているアプリレベルのNsUrlSessionインターセプタをどのように適用するのですか? iOS Swift?

私は、すべてのネットワーク呼び出しのためのインターセプタを適用したいフレームワークを開発し、nは私のガードクラスごとに追加することなく、アプリレベルでそれを追加する方法を考え出すています。オブジェクトレベル

func getURLSessionConfiguration() -> URLSessionConfiguration 
    { 
    let configuration = URLSessionConfiguration.default 
      configuration.protocolClasses?.append(MyURLProtocol.self) 
    return configuration 
} 


let defaultSession = URLSession(configuration: getURLSessionConfiguration()) 
+0

URLSessionを好きなようにラップすることができます。 – ovo

+0

アプリでNSUrlSessionを使用するすべてのライブラリに適用したい – inni

答えて

0

でインターセプターを追加するための

コード私の知っている唯一の方法はNSURLSessionConfigurationためにinitメソッドをスウィズルとのセットにあなたのNSURLProtocolを事前に注入することをコードでメソッドの既存の実装をラップすることですプロトコル。

swizzleを行う場合は、元のIMPを直接呼び出すC関数を記述し、メソッドの名前を変更するのではなく、元のセレクタに渡してください。

詳細については、What are the Dangers of Method Swizzling in Objective C?を参照してください。

+0

appstoreはこの設定を許可しますか? – inni

+1

もちろん。アプリはいつも方法を驚かせる。 – dgatwood

関連する問題