内嵌式安装弃用迁移常见问题解答

自 2018 年 6 月 12 日起,内嵌式安装已被弃用。有关更多信息,请阅读我们的 Chromium 博客 帖子

时间轴问题

2018 年 6 月 12 日有哪些变化?

2018 年 6 月 12 日当天或之后首次发布的 Chrome 应用商店内容(例如扩展程序和应用)将 已停用内嵌式安装。“已停用”意味着使用内嵌式安装 在 Chrome 应用商店中,系统会自动将用户重定向至该产品的详情页面 以完成安装。商店中首次上架的现有商品不会发生任何变化 。

2018 年 9 月 12 日会有哪些变化?

此停用设置将应用于所有商品,无论其发布日期为何。100% 内嵌式安装 所有商品的尝试都会重定向到 Chrome 应用商店,用户可以在那里完成 安装。

在 2018 年 9 月 12 日之前我需要做些什么?

您无需进行任何更改,但我们建议您检查自己的安装流程, chrome.webstore.install() 调用,其中包含直接转到您产品的 Chrome 应用商店商品详情页面。 现在,您可以验证自己能否提供最佳用户体验。

我们还建议您在自己的 Chrome 应用商店中加入新的 Chrome 应用商店下载徽章, 安装流程

M71(2018 年 12 月)将带来哪些变化?

从 M71 开始,Chrome 将不再支持 chrome.webstore.install() 方法和调用 它将失败,进而导致您网站上的安装流程无法正常运行。此时,对 API 的调用 则抛出 JavaScript TypeError。您应在此日期之前移除对该 API 方法的所有调用。

停用内嵌式安装后

安装流程是怎样的?

当您的网站调用 chrome.webstore.install() 时,Chrome 不会再立即触发对话框 而是会打开一个指向 Chrome 应用商店详情页面的新前台标签页(例如 https://chrome.google.com/webstore/detail/EXTENSION_ID)。然后,用户可以浏览 标准安装流程,系统会显示一个对话框,提示用户阅读 然后安装或取消。对话框关闭后,此标签页会保留在 Chrome 上 应用商店。

如何判断安装是否成功?

当您调用 chrome.webstore.install() 时,系统将触发 failedCallback 并显示错误 表明用户被重定向到了 Chrome 应用商店。它不会指出 安装是否成功。请注意,从 Chrome 71 开始,调用 chrome.webstore.install() 将失败,因此 failCallback 将永远不会执行。

如果没有此 API,您的网站仍可通过 扩展程序和网站之间这可以通过扩展程序消息和 externally_connectable 属性。

"externally_connectable": {
  "matches": ["https://www.example.com/*"]
}
// JS running on https://example.com
try {
  chrome.runtime.sendMessage('EXTENSION_ID', MESSAGE, function() {
    if (chrome.runtime.lastError) {
      // Extension is not installed.
    }
  });
} catch (e) {
  // Extension is not installed.
}

替换以下内容:

  • EXTENSION_ID:您的扩展程序的 ID。
  • MESSAGE:要发送到扩展程序的消息字符串或对象。

如何在安装后触发信息页面?

请使用 chrome.runtime 事件,并在安装后打开新标签页。这里的示例使用 您的背景页:

chrome.runtime.onInstalled.addListener(function listener(details) {
  if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
    chrome.tabs.create({url: "https://www.example.com/"});
    chrome.runtime.onInstalled.removeListener(listener);
  }
});

我可以申请豁免吗?

否。此政策变更适用于 Chrome 应用商店中的所有商品,无一例外。