如何在Safari App Extension中识别标签(或获取其ID)?

时间:2019-07-08 12:28:33

标签: safari-app-extension

我正在开发Safari应用程序扩展,我想确定打开的标签页。我找不到ID,也没有方法。

Chrome有一个很棒的API:https://developer.chrome.com/extensions/tabs。我该如何使用Safari App Extension(在Swift中)?

Safari选项卡API非常差,并且不包含ID(https://developer.apple.com/documentation/safariservices/sfsafaritab

3 个答案:

答案 0 :(得分:0)

更多细节会有所帮助。您是什么意思“ ID”?您实际上想做什么? 您可以使用SFSafariApplication API访问扩展处理程序中的标签。我没有亲自测试过,但是看起来可能像这样:

SFSafariApplication.getActiveWindow { (window) in
    window?.getActiveTab { (tab) in
       ...do something with the tab...
    }
}

答案 1 :(得分:0)

能否请您详细说明您要实现的目标?

我想,在最坏的情况下,您可以在每个页面中注入一个脚本,您将在其中生成一个随机ID,并将其发送给主机应用,该应用会将其全部存储到UserDefaults中。然后,当您需要检索一个选项卡时,可以遍历所有选项卡,并与dispatchMessageToScript与您要定位的选项卡建立某种通信。

SFSafariTabhashValue继承NSObject。这样可以识别您的标签。

答案 2 :(得分:0)

您是对的。该API不容易使用。但是,有一种获取ID的方法。 git push --force-with-lease本身。

SFSafariPage采用SFSafariPage。您可以使用NSSecureCoding来比较从savedPage.isEqual(newPage)得到的页面是否相同。该页面是指针或代理。但是内容是唯一的。

P.S 您应该非常注意getActiveTab。处理程序始终是一个新对象。使用单例模型保存页面索引可以确保数据不会丢失。