【问题标题】:How to Launch a Mac OS App From Safari Extension?如何从 Safari 扩展启动 Mac OS 应用程序?
【发布时间】:2019-09-20 11:53:42
【问题描述】:

有谁知道在新的 Safari 扩展中替换以下用于启动 MacOS 应用程序的旧扩展代码块是什么?

safari.application.activeBrowserWindow.activeTab.url = "{app_url_scheme}://"

我们目前正在努力从旧版扩展转换为支持更新的 Safari 扩展框架。在旧版扩展中,我们使用 global.html 文件中的以下代码来启动我们的 Mac OS 应用程序:

safari.application.activeBrowserWindow.activeTab.url = "{app_url_scheme}://......."

新的 Safari 扩展框架中的类似代码似乎如下:

guard let url = URL(string: "{app_url_scheme}://") else {
    return
}

SFSafariApplication.getActiveWindow {(activeWindow: SFSafariWindow?)in
    activeWindow?.openTab(with: url, makeActiveIfPossible: false, 
    completionHandler: { (activeTab: SFSafariTab?) in
        print("openTab completed")
    })
} 

但是,如果选项卡像“https://www.cnn.com”这样的选项卡可以正常打开,但如果它只是“{app_url_scheme}://”则不会执行任何操作。此外,我可以在 Safari 浏览器中输入“{app_url_scheme}://”,它会正常启动应用程序,所以我知道这不是注册问题。

【问题讨论】:

    标签: swift macos safari


    【解决方案1】:

    对于将来遇到此问题的任何人来说,启动 MacOS 应用程序的代码似乎如下:

    guard let url = URL(string: "{app_url_scheme}") else {
       return
    }
    
    NSWorkspace.shared.open(url)
    

    【讨论】:

      最近更新 更多