如何拦截所有iOS WKWebView上的http(s)请求?

4

我有一个Android应用程序,它在WebView上严重依赖shouldIntercept,理想情况下使用WKWebView将其移植到iOS。是否有一种实现类似于所有http和https调用的shouldIntercept的方法?

编辑:Android WebView将让我拦截所有资源,包括图像、视频、HTML、JavaScript等。在iOS上有没有类似的方法?

1个回答

5

请查看这个名为WKWebViewWithURLProtocol Casolorz的Github代码库。该库使用方法交换启用NSURLProtocol拦截您的网络请求。


谢谢你。这个能被App Store接受吗,还是会被拒绝? - casolorz
@casolorz,这对你来说具体是如何工作的?我只看到了基本请求。你介意分享一下你的代码吗? - Alejandro Cotilla
@AlejandroCotilla,如果您的目标是 iOS 10.0 及以下版本,为了拦截所有请求,您需要使用 https://github.com/WildDylan/WKWebViewWithURLProtocol 和自定义 NSURLProtocol https://www.raywenderlich.com/2292-using-nsurlprotocol-with-swift。如果您的目标是 iOS 11.0 及以上版本,则可以直接使用 WKURLSchemeHandler。 - Rizwan Ahmed
@RizwanAhmed,@casolorz - 感谢您的回复。但是需要澄清的是,WKURLSchemeHandler 不能让您处理http或https,并且使用 WKWebViewWithURLProtocol 时,我只看到基本请求(没有图片、字体或xhr),就像使用 WKNavigationDelegate时一样,我可能使用不当。但无论如何,我们决定使用Web服务来实现我们想要的目标。 - Alejandro Cotilla
@AlejandroCotilla,在这种情况下,请使用我提到的库。它完美地完成所有任务。 :) - Rizwan Ahmed
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接