如何在Safari App Extension中获取活动选项卡?

时间:2016-09-27 12:20:29

标签: swift macos safari safari-app-extension

当我按照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)
                    }
                }
            })
        })
    })
}

3 个答案:

答案 0 :(得分:5)

是的,有一个getActiveTab:

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

答案 1 :(得分:4)

您的Safari App Extension只能访问您的扩展程序配置为访问的网站的标签页。

在您的Info.plist中,验证SFSafariWebsiteAccess dictionary

  • 等级等于“部分”或“全部”。

  • 允许的域数组中是否列出了所有必需的域名(如果Level =“部分”)。

请注意,您的扩展程序的网站访问权限显示在 Safari >中偏好设置>的扩展程序即可。我们鼓励您限制您的网站访问“某些”(和显式域名),除非您确实需要访问每个网站。

答案 2 :(得分:0)

您应该转到info.plist NSExtension->SFSafariWebsiteAccess,然后为“允许的域”设置一些内容(例如*-对于所有站点)。没有这个选项,我总是从窗口中得到零。我认为如果不允许该网站,您的扩展程序将无法正常工作。

相关问题