2012-05-30 1 views
9

Safari 브라우저 확장 프로그램이 자체 제거를 감지하는 방법이 있습니까?사파리에서 확장 프로그램 제거 이벤트 받기

내 확장 프로그램의 제거율을 추적하기 위해 Google 애널리틱스에 이벤트를 보내고 싶습니다.

+0

localStorage를 사용하여 확장 프로그램의 상태 (= '제거 필요')를 유지하려고합니다. 문제는 사용자가 ext를 제거 할 때이 값이 지워지지 않는다는 것입니다. 확장 프로그램이 제거되었다는 것을 알았다면 깨끗한 슬레이트로 돌아 오는 localStorage를 지울 수있었습니다. –

답변

3

개발 포럼을 둘러 본 후 Safari에는 Chrome과 달리 그러한 이벤트가 없거나 문서화되지 않은 것으로 밝혀졌습니다. 따라서 사용되지 않을 것입니다. 인 (~/라이브러리/사파리/확장 또는 삭제에 대한 Extensions.plist 파일을 모니터링 할 수있는 외부 서비스를 설정

가) 요청 Apple's bug-reporting and feature-requesting site

B를 통해 기능) : 당신의 최상의 선택이 생각

c) 하루에 한 번 또는 다른 간격으로 외부 서비스에 ping을 수행하는 대신 활성 사용자를 추적하십시오. 삭제/비활성 비율은 활동 감소에 의해 추정 될 수 있습니다.

+0

위의 의견에서 내 사용 사례를 해결하는 방법에 대한 아이디어가 있습니까? –

+0

@MaciejJankowski localStorage는 Safari가 Safari를 재설정하거나 확장 프로그램에서 지울 때 초기화됩니다. 설치 제거를 감지 할 수있는 방법이 없으므로 제거 할 때 제거 방법이 없습니다. 이상한 localStorage를 지우는 것은 사용자의 몫입니다.하지만 현재 시스템이 작동하는 방식입니다. – mleyfman

+1

@MaciejJankowski, 인기있는 확장 기능 (1Password 등)이 확장 기능 샌드 박스 외부에 후크를 추가하기 위해 AppleScripts를 살펴볼 수도 있습니다. – mleyfman

0

전역 파일 스크립트에 window.onunload 이벤트를 등록하여 확장을 제거한 시간을 감지 할 수 있습니다. 사파리가 이벤트를 사용하여 확장 저장 공간을 지울 수 있으므로 addEventListener()를 'unload'와 함께 사용하는 것이 좋습니다. 또한 이러한 경우 전역 페이지가 언로드되기 때문에 확장 업데이트 또는 다시로드의 경우 이벤트가 실행되는지 감지해야합니다.

window.addEventListener("unload", function() { 
    //handle uninstall event 
});