如何为《Safari 浏览器》转换现有的网络扩展

使用与 Google Chrome,Mozilla Firefox 和 Microsoft Edge 网络浏览器的扩展中相同的扩展模型与 API 创建《Safari 浏览器》网络扩展后,你可以帮助人们更快、更高效地完成常见在线任务。

如果你准备把现有的网络扩展发布在 Mac App Store 上,可以用 Xcode 12 的转换工具轻松完成转换工作。下面就来看看如何处理。

Activity Link wwdc2020-10665

Safari 浏览器网站扩展介绍

创建 Safari 浏览器网站扩展,可以帮助人们更快、更高效地完成常见的网上任务。我们将向您展示如何构建新的 Safari 浏览器网站扩展并将其托管在 App Store 上,以及如何使用 safari...

Watch now

Safari web extensions

转换扩展

开始前,确保你已经安装了最新版本的《Xcode 12》,《命令行工具》和《Safari 浏览器 14》。准备就绪后,你就可以在《终端》App 中运行下列命令了:xcrun safari-web-extension-converter /path/to/my/extension/

xcrun safari-web-extension-converter /path/to/my/extension/

转换工具会在 ./path/to/my/extension/manifest.json 中搜索你的扩展的清单文件,并为你的 Xcode 项目生成一个默认的配置。如果配置显示正确,在提示框中输入“yes”,再按下 Return 键。如果不正确,输入“no”,然后进入转换工具的交互模式,对配置进行自定义设置。


注意:检查键值_ 在转换过程中,safari-web-extension-converter 会在你的清单文件中搜索你安装的《Safari 浏览器》版本不支持的键值。如果 Xcode 发现任何问题,这个 App 就会显示一条警告信息。如果你收到此信息,需要考虑受影响的键值是否对你的扩展发挥功能有重要作用。你可能仍然可以保留这些键值,而对运行毫无影响,但一定要测试扩展,加以确认。


在 Xcode 中调整已转换的扩展

Safari 网络扩展需要容器 App,以便在 Mac App Store 上发布你的扩展。作为转换过程的一部分,Xcode 会自动创建并打开一个容器 App 项目,以容纳你的扩展文件。从这里,你可以测试扩展、进行任何必要的代码更改、更新扩展的图标并将容器 App 上传,以通过 Mac App Store 加以发行。

测试、测试,再测试 在 Xcode 项目内,你可以按 Command-R 或者屏幕左上部的三角形按钮,构建并运行扩展。

你的容器 App 有一个按钮,可以打开《Safari 浏览器》扩展偏好设置。选中此按钮以打开 Safari,并在浏览器中启动你的扩展。

注意:如果这是你第一次通过 Xcode 测试扩展,你需要在《Safari 浏览器》中启动对未注册扩展的支持。按照下列步骤操作:

更改代码 你的 Xcode 项目默认引用扩展的现有内容和原生 Swift 或 Objective-C 代码以创建容器 App。在测试后,你可以对此项目进行任意必要的更改;下次你构建 Xcode 项目时,你所做的任何变更都将自动显示为《Safari 浏览器》网络扩展的一部分。

更新图标 Xcode 会使用你的清单文件中列出的任意扩展图标作为你的 App 图标,它也会显示在 Mac App Store 列表中。不过,因为《Safari 浏览器》网络扩展图标通常较小,你可能需要更新到更高分辨率的图像版本,以呈现最佳效果。

Alt text: 在 Xcode 中上传图标的截屏

要更改图标,选中 Xcode 侧边栏中的 Assets.xcassets 文件夹,然后将新图标拖入尺寸合适的图像井格。

向 Xcode 项目额外添加任意文件 如果你需要在转换完成后向扩展额外添加资源或代码文件,例如用户界面使用的图像或转换过程中丢失的其他依赖项目,你需要手动向 Xcode 项目添加这些文件。

在《访达》中选中任意文件,然后把它们拖入位于 Xcode 项目左侧边栏的“Resources”(资源)文件夹。在文件对话框中取消勾选“Copy items if needed”(按需拷贝项目),以确保这些文件自动关联到你的 App。

分发你的扩展

准备好分享你的扩展后,使用你的 Apple 开发者帐户登录到 App Store Connect,然后上传容器 App 进行发布。在提交到 Mac App Store 前要记得先阅读 App Store 相关指南;Apple 会检查所有扩展与扩展更新,以验证它们的运行可靠性。

Learn more about submitting extensions to the Mac App Store