2015-09-25 209 views
4

我創建了一個的NSURLRequest(HTTPS)WKWebView空白後,「成功」 HTTPS的NSURLRequest

爲WKWebView的委託回調回來的成功,沒有錯誤。

「decidePolicyForNavigationAction」在決定處理器

@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我得到正確的網頁顯示?

乾杯,

+0

您是否已將'WKWebView'添加到您的視圖層次結構中?如果你要默認使用'.UseCredential',那麼你也可以簡單地不實現第二個委託方法。 –

+0

@StefanArentz是肯定在層次結構 - 只是沒有發生:(它會顯示https://www.google.com但不是http://www.google.com - 但會顯示www.apple.com和https:/ /www.apple.com – theiOSDude

+0

你是否實現了'didFailNavigation:withError'和'didFailProvisionalNavigation:withError'?如果沒有實現這些來檢測錯誤,從工作的鏈接看來,它們似乎是https URLS,而不是http URL。iOS9中有一項新的安全功能,除非它們符合特殊規則或者您設置xcode以覆蓋新功能,否則無法加載http URLS。請參閱http:// stackoverflow。com/questions/32719032/xcode-7-uiwebview-doesnt-load-url/32719408#32719408 –

回答

5

要檢測錯誤,您應確保您執行didFailNavigation:withErrordidFailProvisionalNavigation:withError

從工作的鏈接看來,它們似乎是https URL。那個不是一個http URL。實現上述錯誤方法應該告訴你什麼是錯的。

iOS9中有一項新的安全功能,它無法加載HTTP URL,除非服務器符合特定的一組規則,或者您設置xcode來覆蓋新功能。您可以通過將以下內容添加到Info.plist文件中來覆蓋新功能。只需粘貼在底部的以下內容:

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

這將覆蓋所有的新功能。但是,您可以執行更具體的覆蓋。在改變蘋果的技術說明是在這裏:https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

+0

乾杯,但是在我的plist中獲得了NSAppTransportSecurity條目,因爲沒有錯誤被觸發:-(只是完成的導航!噓,目前我已經回到UIWebView – theiOSDude

+0

@theiOSDude如果我用WKWebView創建一個新項目,並嘗試加載http://www.google.com,'didFailProvisionalNavigation:withError'會觸發ATS錯誤。更新Info.plist中的變化,它可以正常工作,可以在ObjC和Swift中使用。你確定你已經實現了這個委託並且正確地更新了plist嗎? –

+0

@theiOSDude值得你展示更多代碼嗎? –

2

我也有這個問題,但發現在培訓視頻這個解決方案:

  1. 添加字典關鍵看你的info.plist具有以下名稱: NSAppTransportSecurity
  2. 創建一個布爾子鍵名稱爲 NSAllowsArbitraryLoads並設置爲TRUE。

之後,它在這裏工作。

0

確保您WKWebView框設置爲在viewDidLoad中積極的高度,因爲否則的WebView有沒有高度似乎並沒有加載前後調整自身:

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