2012-05-30 33 views
9

Esiste un modo per un'estensione del browser Safari per rilevare la propria disinstallazione?ottieni l'evento di disinstallazione dell'estensione in safari

Desidero inviare un evento a Google Analytics per tenere traccia del tasso di disinstallazione della mia estensione.

+0

Sto usando localStorage per mantenere lo stato dell'estensione (= 'need uninstallation'). Il problema è che questo valore non viene cancellato quando l'utente disinstalla ext. Se avessi saputo che l'estensione era stata disinstallata, avrei potuto cancellare localStorage tornando alla lista pulita. –

risposta

3

Dopo aver esplorato i forum di sviluppo, ho scoperto che a quanto pare Safari non ha tali eventi (diversamente da Chrome) o se ce ne sono, non sono documentati (e quindi non sono pensati per essere utilizzati). Credo che le vostre scommesse migliori sono:

a) Richiesta la funzione tramite Apple's bug-reporting and feature-requesting site

b) Impostare un servizio esterno in grado di monitorare ~/Library/Safari Extensions/o il file Extensions.plist per l'eliminazione (che è probabilmente enormemente difficile, considerando i rischi per la sicurezza)

c) Tenere traccia della base di utenti attiva invece eseguendo il ping di un servizio esterno una volta al giorno o in un altro intervallo. Il tasso di cancellazione/inattività può quindi essere stimato in base al calo dell'attività.

+0

qualche idea su come risolvere il mio caso d'uso dal commento sopra? –

+0

@MaciejJankowski localStorage viene cancellato solo quando Safari lo cancella tramite ripristino di Safari o quando lo si cancella nell'estensione. Poiché non c'è modo di rilevare la disinstallazione, non c'è un modo per eliminarlo dopo la disinstallazione. Spetta all'utente cancellare il loro localStorage, che è strano, ma è così che funziona il sistema attuale. – mleyfman

+1

@MaciejJankowski, potresti anche voler esaminare AppleScript, poiché alcune estensioni popolari (1Password e altre) li utilizzano per aggiungere ganci all'esterno della sandbox dell'estensione. – mleyfman

0

È possibile registrare l'evento window.onunload nello script di file globale per rilevare quando viene disinstallata l'estensione. Meglio usare addEventListener() con 'unload', in quanto safari potrebbe utilizzare l'evento per cancellare l'archiviazione dell'estensione. Assicurati anche di rilevare se l'evento viene attivato in caso di aggiornamento dell'estensione o ricarica perché in questi casi viene scaricata anche la pagina globale.

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