msh*_*arp 6 swift wkwebview safari-app-extension
目标 实现一个 Safari 应用程序扩展,显示一个弹出窗口,里面有一个显示网页的 WebView。
问题 弹出窗口在 Safari 中正确显示,单击它会显示一个空白的弹出窗口,其中没有任何内容。
根据控制台中的日志,viewDidLoad() 消息正确显示,但弹出窗口只是空白。我在这里做错了什么?
谢谢!
这是我的代码: 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)
    }
}
小智 5
如果您使用 safari 扩展应用程序,则需要在扩展程序的 .entitlements 文件中添加网络请求的权限。
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
添加这些行,它对我有用。
| 归档时间: | 
 | 
| 查看次数: | 1057 次 | 
| 最近记录: |