目标实现Safari应用程序扩展,该扩展显示弹出窗口,其中包含显示网页的WebView。
问题弹出窗口在Safari中正确显示,单击它会显示一个空白的弹出窗口,其中没有任何内容。
根据Console中的日志,viewDidLoad((消息正确显示,但popover只是空白。我在这里做错了什么?
谢谢!
以下是我的代码:SafariExtensionViewController.swift
import SafariServices
import WebKit
import os.log
class SafariExtensionViewController: SFSafariExtensionViewController, WKNavigationDelegate {
static let shared = SafariExtensionViewController()
var webView : WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "safari")
self.preferredContentSize = NSMakeSize(300, 450)
webView = WKWebView(frame: self.view.frame)
self.view.addSubview(webView)
webView.navigationDelegate = self
webView.translatesAutoresizingMaskIntoConstraints = false;
let height = NSLayoutConstraint(item: webView, attribute: .height, relatedBy: .equal, toItem: self.view, attribute: .height, multiplier: 1, constant: 0)
let width = NSLayoutConstraint(item: webView, attribute: .width, relatedBy: .equal, toItem: self.view, attribute: .width, multiplier: 1, constant: 0)
self.view.addConstraints([height,width])
let startingUrl = URL(string: "https://www.google.com")
webView.load(URLRequest(url: startingUrl!))
os_log("viewDidLoad() has finished.", log: log)
}
}
如果您使用的是safari扩展应用程序,则需要在扩展的.authorities文件中添加网络请求的权限。
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
加上这些行,对我有效。
发现问题!事实证明,对于访问网络的扩展,您需要转到目标->功能部分,打开应用程序沙盒并启用传出网络请求。