WKWebView和NSURLProtocol无法正常工作

Joh*_*han 36 uiwebview ios swift ios8 wkwebview

使用旧的UIWebView时,您可以通过实现自定义NSURLProtocol来捕获请求.我这是为了处理需要身份验证的请求.

我尝试了相同的代码,它不适用于新的WKWebView,但我的协议类根本没有被调用.有人遇到同样的问题,还是有更好的方法来使用WKWebView进行身份验证?

在没有任何修改的情况下,我在decisionPolicyForNavigationResponse委托函数中获得了401响应.我还尝试使用NSURLConnection连接到服务器并使用NSURLConnectionDataDelegate处理身份验证.这可行,但WKWebView不会获取存储的凭据.

Leo*_*ica 51

更新了iOS 11和macOS 10.13的答案

从iOS 11开始,可以声明符合WKURLSchemeHandler协议的对象 并在WKWebView配置中注册它:-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:].

老答案

WKWebView发出请求并将内容呈现在进程外,这意味着您的应用程序不会听到他们提出的请求.如果您缺少某项功能,现在是时候向Apple打开错误报告和/或增强请求了.

从iOS 10.3 SDK开始,WKWebView仍然无法NSURLProtocol使用公共API 使用自定义.


有进取心的开发人员已经找到了一个有趣的方法: +[WKBrowsingContextController registerSchemeForCustomProtocol:] 它应该将提供的方案添加到自定义协议处理方案列表中,然后应该使用NSURLProtocol.