如何在Safari应用扩展中获得活动选项卡



当我遵循Apple的例子时,我总是得到nil activeTab:

override func toolbarItemClicked(in window: SFSafariWindow) {
    // This method will be called when your toolbar item is clicked.
    window.getActiveTab(completionHandler: { (activeTab) in
        print(activeTab)
        activeTab?.getActivePage(completionHandler:  { (activePage) in
            print(activePage)
            activePage?.getPropertiesWithCompletionHandler( { (properties) in
                print(properties)
                if properties?.url != nil {
                    let urlString = properties!.url.absoluteString
                    print("URL!", urlString)
                    let videoURL = self.youtubeDl(urlString: urlString)
                    if videoURL != nil {
                        window.openTab(with: videoURL!, makeActiveIfPossible: true, completionHandler: nil)
                    }
                }
            })
        })
    })
}

有一个getActiveTab:

SFSafariApplication.getActiveWindow { (window) in
    window?.getActiveTab { (tab) in 
        tab?.getActivePage(completionHandler: { (page) in
        }
    }
}

您的Safari应用扩展只能访问您的扩展配置为访问的站点的选项卡。

在你的信息。plist,验证SFSafariWebsiteAccess字典:

  • 有一个水平 = " 一些"或"所有"。

  • 允许域数组中列出所有必需的域(如果Level="Some")。

请注意,您的扩展的网站访问权限显示在Safari> Preferences> Extensions。除非您确实需要访问每个网站,否则建议您将网站访问限制为"某些"(和明确的域名)。

你应该去info。plist, NSExtension->SFSafariWebsiteAccess,并设置一些(例如* -对于所有站点)为允许域。没有这个选项,我总是从窗口得到nil。我认为你的扩展不工作,如果网站是不允许的。

相关内容

  • 没有找到相关文章

最新更新