自 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 線上應用程式商店的商品,絕無例外。