• Stars
    star
    183
  • Rank 210,154 (Top 5 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created about 8 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

WKWebView With URLProtocol

WKWebViewWithURLProtocol

:Warning:

Note:If you target iOS 11, you can now use WKURLSchemeHandler to avoid this trick! 😆

introductions

MIT Licence

After iOS8.0, 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 Javascript bridge or NSURLSession.

[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 http and https scheme.

[_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 > iOS8.4

Some questions:

Q: Used private API when in review:

A: Watch this issue

Installation
pod "WKWebViewWithURLProtocol"
Author

Dylan, [email protected]

Thanks

@yeatse, Original repo without cocoapods

License

MIT License.

FOSSA Status