[英]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.