Как заставить Chrome-приложение обновляться как можно скорее?
Развертывание хром-упакованного приложения и публикация обновлений в хромовом веб-магазине позволяет пользователям автоматически получать обновления приложений. Бывают ситуации, когда вы хотите узнать, является ли работающее приложение наиболее актуальным или нет, и обновлять его. Например:.
- Просто сохраняя пользователя в самой последней версии.
- Обнаружение несоответствия между API-интерфейсом приложения и сервера и необходимость обновления клиентского приложения для использования новых API-интерфейсов на стороне сервера.
Документация для chrome.runtime.requestUpdateCheck() предлагает статус "throttled"
, "no_update"
, "update_available"
, но doesn ' t указывает, что делать, если требуется более новая версия.
Ответы
Ответ 1
Установите прослушиватель для chrome.runtime.onUpdateAvailable
, который запускается, когда новый .crx файл был загружен, и новая версия готова к установке. Затем вызовите chrome.runtime.requestUpdateCheck
:
chrome.runtime.onUpdateAvailable.addListener(function(details) {
console.log("updating to version " + details.version);
chrome.runtime.reload();
});
chrome.runtime.requestUpdateCheck(function(status) {
if (status == "update_available") {
console.log("update pending...");
} else if (status == "no_update") {
console.log("no update found");
} else if (status == "throttled") {
console.log("Oops, I'm asking too frequently - I need to back off.");
}
});
Ответ 2
В зависимости от вашего приложения, когда обнаружено обновление, вы можете использовать что-то вроде setTimeout
и вызывать chrome.runtime.restart()
или chrome.runtime.restart()
позже
Ответ 3
Согласно документации Google Chrome вам необходимо иметь
chrome.runtime.onUpdateAvailable.addListener(function(details) {
chrome.runtime.reload(); // To restart the chrome App instantaneously
});
Но это требует времени, чтобы отразить изменения JS в chrome, потому что background.js загружен в фоновый режим, и его необходимо выгрузить и загрузить снова.
Чтобы справиться с этой ситуацией, вам нужно включить
chrome.runtime.onInstalled.addListener(function(details) {
chrome.runtime.reload();
});
также.
onInstalled вызывается при первой установке расширения Google (новая установка), обновляется расширение Google или обновляется Google Chrome.
Ответ 4
Наверное, лучший способ узнать, как использовать принудительные обновления:
setInterval(function() {
chrome.runtime.requestUpdateCheck(function(status) {
if(status == 'update_available') {
chrome.runtime.reload();
}
});
}, 100);
Это в основном заставляет приложение (или расширение) проверять обновления каждые десятые доли секунды..., что гарантирует, что копии клиентов будут обновляться в кратчайшие сроки.