2017-09-25 10 views
0

私は、アプリケーションでURLProtocolを実装しています。 URLProtocolが初期化されない

import Cocoa 

class MyURLProtocol: URLProtocol { 

    override init(request: URLRequest, cachedResponse: CachedURLResponse?, client: URLProtocolClient?) { 
     super.init(request: request, cachedResponse: cachedResponse, client: client) 
    } 

    override class func canInit(with request: URLRequest) -> Bool { 
     return true 
    } 

    override class func canonicalRequest(for request: URLRequest) -> URLRequest { 
     return request 
    } 

    override func startLoading() { 
     print("loading") 
    } 
} 

canInit(with request: URLRequest)は常にtrueを返しますが

、どちら init(…)canonicalRequest(…)startLoading()が呼び出されます。 MyURLProtocolため

URLProtocol.registerClassは私が何をするか分からないAppDelegate

willFinishLaunchingで呼ばれています。昨日、少なくとも関数を呼び出した日コード。

ありがとうございました。

答えて

0

URLSessionをお使いですか? URLSessionは通常のプロトコル登録をバイパスし、代わりにURLSessionConfigurationのプロトコルを明示的に設定しています。 URLSessionConfiguration.protocolClassesを参照してください。

+0

いいえ、私はWKWebViewでURLRequestをロードしています。 – Sandro

+0

私のアプリケーションでdiffernt URLスキームを処理する必要があります – Sandro

+0

私はWKNavigationDelegateとfunc webView(_WebView:WKWebView、didFailProvisionalNavigationナビゲーション:WKNavigation !, withErrorエラー:エラー)を実装して、サポートされていないURLエラーで呼び出されます。 – Sandro

0

実際に私はMac OSのアプリケーションではなくiOSのマシンで作業していますが、WKWebViewからWebViewに変更したときに問題を修正しました。

Kevin Ballardさんのコメントに感謝します。

+0

iOS 11 APIは、macOS 10.13(本日発売)にも含まれています。 –

関連する問題