[英]How do I get the file open dialog to work, when called through a SwiftUI WKWebView inside a macOS native app?
[英]How do I create a WKWebView App for MacOS
我在 IOS App Store 中有一个用 XCode 开发的 HTML5 应用程序,我希望为 Mac App Store 创建该应用程序的副本。 我认为这很容易,但我找不到任何简单的教程来遵循,当然不是使用 XCode 11 和 Swift 5.1。 我不想走 Mac OS 10.15 中提供的自动路线
当我构建 XCode 11 附带的默认 Hello World 应用程序时,它不会在 10.14 上运行! 我还不想升级到 10.15,主要是因为我希望该应用程序可以在早期版本的 MacOS 上运行
任何可以向我提供 WKWebView 应用程序加载本地文件的工作示例的参考的人都将成为我的英雄。
步骤 1 - 安装 XCode 11 并打开它。
步骤 2 - 从主菜单中选择“文件”、“新建”和“项目”。
第 3 步 - 选择“应用程序”(左上角)并选择“下一步”(右下角)。
第 4 步 - 为您的应用命名,为用户界面选择“故事板”,然后选择“下一步”。
步骤 5 - 选择一个文件夹,用于在您的计算机上存储您的新应用程序,然后选择“创建”。
第 6 步 - 在 XCode Navigator(左侧窗格)中,从上下文菜单中选择“添加文件”。
第 7 步 - 选择包含 html/javascript/css/image 文件的文件夹 - 在本例中,我假设该文件夹的名称为“www”,但它可以是任何名称 - 只需记住将下面显示的代码中的“www”更改为你想要什么。
步骤 8 - 选择“为任何添加的文件夹创建文件夹引用”并选择“添加”
第 9 步 - 从导航器窗格中选择“ViewController.swift”并将所有内容替换为如下所示的代码,将“www”更改为包含您的 html 等的文件夹名称,并将“AppName”更改为您的 html 文件的名称。
第 10 步 - 按“运行”并使用您的新应用。
有关如何发布它和添加其他功能(例如在应用程序购买中),请参阅 Apple Developer 和其他互联网资源/堆栈溢出问题。
import Cocoa
import WebKit
class ViewController: NSViewController, WKUIDelegate
{
var webView: WKWebView!
override func loadView()
{
let webConfiguration = WKWebViewConfiguration ();
webConfiguration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs");
webView = WKWebView (frame: CGRect(x:0, y:0, width:800, height:600), configuration:webConfiguration);
webView.uiDelegate = self ;
view = webView;
}
override func viewDidLoad() {
super.viewDidLoad()
if let url = Bundle.main.url ( forResource: "AppName"
, withExtension: "html"
, subdirectory: "www")
{
let path = url.deletingLastPathComponent();
self.webView.loadFileURL ( url
, allowingReadAccessTo: path);
self.view = webView ;
}
}
}
使用 Xcode 12 和 Big Sur,我必须转到项目属性,选择签名和功能选项卡,然后在App Sandbox下选中Outgoing Connections (Client)才能从 Steve Brooker 那里获得出色的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.