developer tip

Chrome 확장 프로그램 첫 실행 / 업데이트 감지

copycodes 2020. 9. 2. 18:59
반응형

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!');

EDIT: To check whether the extension has just been updated, store the version instead of a simple flag on first run, then when the current extension version (get it by XmlHttpRequesting the manifest) doesn't equal the one stored in localStorage, the extension has been updated.

참고URL : https://stackoverflow.com/questions/2399389/detect-chrome-extension-first-run-update

반응형