內嵌安裝淘汰作業常見問題

自 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 線上應用程式商店下載徽章

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() 時,系統會觸發 errorCallback 錯誤,指出使用者已重新導向至 Chrome 線上應用程式商店。但不會指出安裝是否成功。請注意,從 Chrome 71 版開始,對 chrome.webstore.install() 的呼叫將失敗,因此系統不會執行 failedCallback。

如果沒有這個 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 線上應用程式商店的商品,絕無例外。