成功后,WKWebView空白了#39; HTTPS NSURLRequest

时间:2015-09-25 10:36:04

标签: ios swift https uiwebview wkwebview

我创建了一个NSURLRequest(HTTPS)

WKWebView的委托回调成功返回,没有错误。

' decidePolicyForNavigationAction'在决策处理程序中提供Allow Enum

   @available(iOS 8.0, *)
    func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {

        decisionHandler(.Allow)

    }

并且didReceiveAuthChallenge按原样处理:

@available(iOS 8.0, *)
func webView(webView: WKWebView, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge,
    completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
        let cred = NSURLCredential.init(forTrust: challenge.protectionSpace.serverTrust!)
        completionHandler(.UseCredential, cred)
        print("Did receive auth challenge")
}

因为我在'didFinishNavigation'之后没有收到任何错误我不确定我的WebView是否仍然空白?如果我使用UIWebView,我会显示正确的网页吗?

干杯,

3 个答案:

答案 0 :(得分:6)

要检测错误,您应确保实施didFailNavigation:withErrordidFailProvisionalNavigation:withError

从有效的链接中,它们似乎是https网址。没有的是http URL。实现上述错误方法应该告诉你出了什么问题。

iOS9中有一项新的安全功能无法加载HTTP URL,除非服务器符合特定的规则集或您设置xcode以覆盖新功能。您可以通过将以下内容添加到Info.plist文件中来覆盖新功能。只需在底部粘贴以下内容:

<key>NSAppTransportSecurity</key>  
<dict> 
   <key>NSAllowsArbitraryLoads</key><true/>  
</dict> 

这会覆盖所有新功能。但是,您可以执行更具体的覆盖。有关更改的Apple技术说明如下:https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

答案 1 :(得分:2)

我也有这个问题,但在培训视频中找到了这个解决方案:

  1. 使用以下名称将词典键添加到info.plist: NSAppTransportSecurity
  2. 使用名称创建一个布尔子项 NSAllowsArbitraryLoads并设置为TRUE。
  3. 之后它在这里工作。

答案 2 :(得分:0)

确保您的WKWebView框架在viewDidLoad中设置为正高度,因为否则webview没有高度,并且在加载后似乎没有自己调整大小:

_webView =[[WKWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height )];