Note：If you target iOS 11, you can now use WKURLSchemeHandler to avoid this trick! 😆
WKWebView want to instead of
UIWebView, but with some defects such as: URLProtocol can't process the request from WKWebView.
WKWebViewWithURLProtocol want to fix this use runtime. Now-coming!
But Notice, WKWebView ignored HTTP Body in request, it's a bug, resolve with
[NSURLProtocol wk_registerScheme:@"http"]; [NSURLProtocol wk_registerScheme:@"https"]; [NSURLProtocol registerClass:[URLProtocol class]];
URLProtocol is the subclass of
NSURLProtocol, before this, use
wk_registerScheme to let
URLProtocol known what scheme can be hooked from WKWebView. Now this demo want to hook
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.devdylan.cn"]]];
Now, open your custom URLProtocol, set some breakpoint or logs, oh my god! it's worked!
Notes: It's only useful when systemVersion >
Q: Used private API when in review:
@yeatse, Original repo without cocoapods