Как заставить 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);

Это в основном заставляет приложение (или расширение) проверять обновления каждые десятые доли секунды..., что гарантирует, что копии клиентов будут обновляться в кратчайшие сроки.