如何在工具栏中点击Safari浏览器扩展程序中的应用程序窗口?

时间:2018-12-21 09:55:40

标签: swift xcode macos safari-app-extension

当用户单击野生动物园中的工具栏项时,我想打开一个应用程序/扩展窗口。这不是关于扩展程序的Popover功能的问题。主要原因是要关闭/隐藏停用和用户操作的窗口(两个条件都必须起作用)。

Safari App Extension(意味着Apple通过新的首选/强制方式为safari创建扩展程序)可以在单击工具栏项时打开Popover或调用Command。但是不能以编程方式将其隐藏(https://forums.developer.apple.com/thread/105817)。根据bweinstein的回答,苹果开发人员正在进行这项工作。

我的用例是有关包含WKWebView和已加载网页的Window。当用户单击其中的任何内容时,我想在Safari的新标签页中打开一个页面(该部分已经在Popover模式下对我有效)并立即关闭该窗口(对我而言尚不可用)

因此,我的想法是避免集成Popover功能。我想在调用Command(override func toolbarItemClicked(in window: SFSafariWindow) {})时显示Window。

我知道这在某种程度上是可行的,例如agilebits的1Password扩展名正是这样做的:单击工具栏项时,显示的窗口没有关闭/最小化按钮,没有菜单等。它完全可以按我的需要工作,但是我不知道该怎么实现。 >

我不知道是将视图定义为Safari扩展的一部分,还是将其定义为包含应用程序的情节提要的一部分,以及如何以编程方式访问该视图,并在用户单击工具栏项时将其显示在屏幕上。 >

由于我是macOS开发的新手,所以我真的没有要共享的代码。我POV的重要部分: -Info.plist的NSExtension->SFSafariToolbarItem->Action设置为Command

如上所述,我需要实现的功能是当用户单击工具栏项目时以编程方式打开和关闭窗口。

预先感谢

1 个答案:

答案 0 :(得分:0)

您是否可以在工具栏ItemClicked中调用SFSafarWindow.openTab(“ httxxx://mysite.com”,true,...)

您还可以调用SFSafariApplication.openWindow API并关闭SFSafariWindow(通过调用windowObject.close())-