[Typescript] chrome.runtime.onInstalled가 크롬 확장프로그램 최초 설치 1회만 실행되지 않는 문제

728x90
반응형

[Typescript] chrome.runtime.onInstalled가 크롬 확장프로그램 최초 설치 1회만 실행되지 않는 이슈

뭔가 크롬 확장프로그램은 파면 팔수록 뭔가 요상한듯하다...
이번엔 chrome.runtime.onInstalled에 addListener로 추가된 핸들러가 실행되는 시점이 문제가 되었다.

필자가 처음에 이해한 onInstalled는 크롬 확장프로그램이 크롬 웹스토어로부터 설치가 되었을때 최초 1번만 실행이 되는것이었다.
하지만 실제 사용해보니, onInstalled는 최초 1회 뿐만 아니라 확장프로그램 새로고침이나, 윈도우 컴에서 재부팅 후 크롬을 실행했을때에도 핸들러를 실행시켰다.
(근데 MacOS에선 재부팅을 하고 크롬을 실행시켜도 onInstalled 핸들러가 실행되지 않았다...)

아무튼 필자가 원하는 동작는 크롬 웹스토어에서 확장 프로그램이 설치되었을때 1회만 핸들러를 실행하는 것이었다보니 별도의 조치를 취하게 되었다.

chrome.runtime.onInstalled.addListener(async () => {
	const isExtensionInstalled = await chrome.storage.local
    	.get('isExtensionInstalled')
        .then(({isExtensionInstalled}) => isExtensionInstalled as boolean | undefined);
    if(!isExtensionInstalled) {
    
    	// onInstalled 작업을 여기에 넣으면 됨	
        
    }
});

필자의 경우, chrome.storage.local을 이용해서 확장 프로그램이 최초 1회 onInstalled 핸들러를 실행했는지에 대한 플래그를 저장해두고 분기 처리했다.

귀찮긴하지만... 현재로썬 이 방법이 최선으로 보인다...

728x90
반응형