[google-chrome] Chrome 확장 프로그램 첫 실행 / 업데이트 감지

확장 프로그램이 처음으로 실행 중이거나 방금 업데이트되었음을 ​​어떻게 알 수 있습니까? 그러면 확장 프로그램이 특정 작업을 수행 할 수 있습니다. (예 : 도움말 페이지 열기 또는 설정 업데이트)



답변

최신 버전의 Chrome (Chrome 22 이후)에서는 chrome.runtime.onInstalled훨씬 더 깔끔한 이벤트를 사용할 수 있습니다 .

예:

// Check whether new version is installed
chrome.runtime.onInstalled.addListener(function(details){
    if(details.reason == "install"){
        console.log("This is a first install!");
    }else if(details.reason == "update"){
        var thisVersion = chrome.runtime.getManifest().version;
        console.log("Updated from " + details.previousVersion + " to " + thisVersion + "!");
    }
});


답변

매니페스트 v3을 반영하도록 답변을 업데이트했습니다.

Chromium에는 이제 확장 프로그램의 버전을 가져올 수 있는 chrome.runtime API 세트가 있습니다.

현재 버전을 얻으려면 :

chrome.runtime.getManifest().version

확장 프로그램이 처음 설치 될 때, 확장 프로그램이 새 버전으로 업데이트 될 때, Chromium이 새 버전으로 업데이트 될 때 수신 대기하려면 onInstalled이벤트를 사용할 수 있습니다 .

chrome.runtime.onInstalled.addListener((details) => {
   const currentVersion = chrome.runtime.getManifest().version
   const previousVersion = details.previousVersion
   const reason = details.reason

   console.log('Previous Version: ${previousVersion }')
   console.log('Current Version: ${currentVersion }')

   switch (reason) {
      case 'install':
         console.log('New User installed the extension.')
         break;
      case 'update':
         console.log('User has updated their extension.')
         break;
      case 'chrome_update':
      case 'shared_module_update':
      default:
         console.log('Other install events within the browser')
         break;
   }

})

그게 다야!


2011 년 이전의 이전 답변

확장이 설치되었거나 업데이트되었는지 확인하려면 다음과 같이 할 수 있습니다.

  function onInstall() {
    console.log("Extension Installed");
  }

  function onUpdate() {
    console.log("Extension Updated");
  }

  function getVersion() {
    var details = chrome.app.getDetails();
    return details.version;
  }

  // Check if the version has changed.
  var currVersion = getVersion();
  var prevVersion = localStorage['version']
  if (currVersion != prevVersion) {
    // Check if we just installed this extension.
    if (typeof prevVersion == 'undefined') {
      onInstall();
    } else {
      onUpdate();
    }
    localStorage['version'] = currVersion;
  }


답변

다행히도 이제 이에 대한 이벤트 가 있습니다 (Chrome 버전 22부터 업데이트 이벤트의 경우 25).

설치된 이벤트의 경우 :

chrome.runtime.onInstalled.addListener(function() {...});

OnUpdateAvailable 이벤트의 경우 :

chrome.runtime.onUpdateAvailable.addListener(function() {...});

개발자 문서에서 OnUpdateAvailable에 대한 중요한 발췌 내용은 다음과 같습니다.

업데이트를 사용할 수있을 때 시작되지만 앱이 현재 실행 중이기 때문에 즉시 설치되지는 않습니다. 아무것도하지 않으면 다음 번에 백그라운드 페이지가 언로드 될 때 업데이트가 설치됩니다. 더 빨리 설치하려면 chrome.runtime.reload ()를 명시 적으로 호출 할 수 있습니다.


답변

단순한. 확장 프로그램이 처음 실행되면 localStorage이 비어 있습니다. 처음 실행할 때 모든 후속 실행을 처음이 아닌 것으로 표시하는 플래그를 작성할 수 있습니다.

예 : background.htm :

var first_run = false;
if (!localStorage['ran_before']) {
  first_run = true;
  localStorage['ran_before'] = '1';
}

if (first_run) alert('This is the first run!');

편집 : 확장이 방금 업데이트되었는지 확인하려면 처음 실행할 때 간단한 플래그 대신 버전을 저장 한 다음 현재 확장 버전 ( XmlHttpRequest매니페스트를 통해 가져옴)이에 저장된 버전 과 같지 않으면 localStorage확장에 업데이트되었습니다.


답변