iOS WKWebView 有时显示

iOS WKWebView displays sometimes

我有一个网页 link 无法通过 iOS WKWebView 显示。如何通过 WKWebView 显示这样的 link?

似乎只有 https://www.google.com and http://www.apple.com 的 3 版本会显示使用 http:// 或 https:// 的网页。如何通过 WKWebView 加载其他网页? (注意:所有网站都在 Google Chrome 和 Apple Safari 中加载,无需使用 http:// 语法。)

下面是来自 ViewDidLoad 的代码:

          @IBOutlet weak var myWebkitView: WKWebView!
          override func viewDidLoad() {
          super.viewDidLoad()


        `if let myUrl = URL(string:"https://www.ihs-us.org")`
         {

          let myURLRequest = URLRequest(url: myUrl)
          myWebkitView.load(myURLRequest)

         }

         }

      Below links works only for Apple and Google. 
     https://www.google.com will shows a Web site
     http://www.apple.com also will shows its web site
     schools.nyc.gov/SchoolPortals/08/X282 -- causes a crash
     ihs-us.org // causes a crash, and does not show a web page

所有浏览器都将 http:// 附加到 url(如果不存在),通常如果网页支持 SSL,就会有一个 re-direction 到 https:// 站点。我开发了一个供内部使用的浏览器,任何 URL 用户输入时,我都会将 http:// 添加到 URL。最简单的方法是

class func getValidURLFromString(_ urlString: String)->String{        
    if !urlString.hasPrefix("http://") && !urlString.hasPrefix("https://"){
        return "http://" + urlString
    }
    else {
        return urlString
    }
}

已编辑: ViewController代码

import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {

@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
    super.viewDidLoad()
    let urlString = isValidURLFormat("schools.nyc.gov/SchoolPortals/08/X282")
    let myURL = URL(string: urlString)
    let myRequest = URLRequest(url: myURL!)
    webView.load(myRequest)
}
func isValidURLFormat(_ urlString: String) -> String {
    if !urlString.hasPrefix("https://") && !urlString.hasPrefix("http://"){
        return "http://" + urlString
    }
    return urlString }

}

Plist 设置

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

试试这个 -

import UIKit
import WebKit

class ViewController: UIViewController{

    @IBOutlet var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let urlString = "ihs-us.org"

        if urlString.hasPrefix("https://") || urlString.hasPrefix("http://"){
            let myURL = URL(string: urlString)
            let myRequest = URLRequest(url: myURL!)
            webView.load(myRequest)
        }else {
            let correctedURL = "http://\(urlString)"
            let myURL = URL(string: correctedURL)
            let myRequest = URLRequest(url: myURL!)
            webView.load(myRequest)
        }

    }

}

schools.nyc.gov/SchoolPortals/08/X282-

而对于 ihs-us.org -

您只需要完成以下步骤-

打开项目的 Info.plist 文件。右键单击它并添加一行。

之后只需将这两行添加到您的(原样)-

`