2

我正在开发带有 Safari Content Blocker 和 Safari Toolbar Item 扩展的 mac 应用程序。

我能够从 mac 应用程序(包含应用程序)获取 Safari 中的 Content Blocker 扩展(启用/禁用)的状态,并能够在 mac 应用程序内显示 Content Blocker 已禁用的警告。

但是有什么方法可以让我从 Safari 工具栏项扩展中获取 Content Blocker 扩展的状态(启用/禁用)?

这是当用户单击 Safari 工具栏项时弹出框可见时执行的代码。

class SafariExtensionViewController: SFSafariExtensionViewController {

    // This function is called from the 
    // SafariExtensionHandler > popoverWillShow(in window: SFSafariWindow)        
    func onPopoverVisible() {

        SFContentBlockerManager.getStateOfContentBlocker(withIdentifier: "com.xyz.macapp.contentblocker") { (state, error) in
            guard let state = state else {
                 // handle the error
                 return
            }
            if state.isEnabled {
                // display toolbar items and hide warning message
            } else {
                // display warning message and hide toolbar items
            }
        }
    }
}

当上面的代码执行时,state.isEnabled总是false.

是否可以从另一个扩展中获取一个扩展的状态?如果是,如何?如果没有,有没有办法处理这种情况?

4

0 回答 0