Shr*_*kar 8 ios swift wkwebview
此代码应该加载Apple主页,而是显示一个空白屏幕.
HTTP和HTTPS URL都会发生这种情况.
码:
import UIKit
import WebKit
class WebViewController: UIViewController, WKUIDelegate{
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .red
let myURL = URL(string: "https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试更改"应用传输安全设置"以允许任意加载.没有改变什么.
截图:
查看层次结构
用于模拟器的Safari调试控制台:
Shr*_*kar 10
我找到了解决方案.问题是由AVG AntiVirus的webshield引起的.出于某种原因,AVG webshield将来自模拟器的所有网络通信视为欺诈性的.以下屏幕截图显示了在模拟器上运行的safari应用程序.它说www.apple.com不安全或任何其他网站.
以下屏幕截图来自system.log,显示webkit的错误.
您可以通过安装AVG防病毒并打开webshield来复制此问题.你的应用程序中的WKWebview(在模拟器上)不会加载任何东西.
我不明白为什么它不适用于实际的设备.这可能是该设备的另一个问题.我还删除了派生数据文件夹,实际应用程序并重新启动了设备.
谢谢大家的答案和帮助.
自动布局和所有设备的常量 10 的正确方法:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
let webView = WKWebView()
override func viewDidLoad() {
super.viewDidLoad()
setupWebView()
}
fileprivate func setupWebView() {
webView.uiDelegate = self
webView.translatesAutoresizingMaskIntoConstraints = false
DispatchQueue.main.async {
guard let url = URL(string: "http://www.apple.com") else { return }
self.webView.load(URLRequest(url: url))
}
view.addSubview(webView)
webView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
webView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
webView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
webView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 10).isActive = true
}}
Run Code Online (Sandbox Code Playgroud)
在 info.plist 中:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
以下代码在 Xcode 9.3 中对我来说工作得很好:
import UIKit
import WebKit
class ViewController: UIViewController {
var webView: WKWebView!
override func loadView() {
webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
self.view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
webView.load(URLRequest(url: URL(string: "https://www.apple.com")!))
}
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
如果要为Mac开发应用程序,请确保上交App Sandbox ON目标并勾选“ Networks传出连接”。
更新:如果您更喜欢长途旅行,请将以下内容添加到 YourAppName.entitlements
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11697 次 |
| 最近记录: |