2012-05-30 9 views
9

¿Hay alguna manera de que una extensión de navegador Safari detecte su propia desinstalación?obtener evento de desinstalación de extensión en safari

Me gustaría enviar un evento a Google Analytics para realizar un seguimiento de la tasa de desinstalación de mi extensión.

+0

Estoy usando localStorage para mantener el estado de la extensión (= 'needs uninstallation'). El problema es que este valor no se borra cuando el usuario desinstala la extensión. Si supiera que la extensión se desinstaló, podría borrar localStorage volviendo a limpiar la pizarra. –

Respuesta

3

Después de rastrear en los foros de desarrollo, descubrí que aparentemente Safari no tiene tales eventos (a diferencia de Chrome) o, si los hay, no están documentados (y por lo tanto no están destinados a ser utilizados). Creo que sus mejores opciones son:

a) Solicitud de la función a través de Apple's bug-reporting and feature-requesting site

b) Establecer un servicio externo que puede monitorear ~/Library/Safari/Extensiones o el archivo Extensions.plist para su eliminación (que es probablemente enormemente difícil, teniendo en cuenta los riesgos de seguridad)

c) Mantenga un registro de la base de usuarios activos en su lugar haciendo ping a un servicio externo una vez al día o en algún otro intervalo. La tasa de eliminación/inactividad se puede estimar mediante una disminución en la actividad.

+0

alguna idea de cómo resolver mi caso de uso desde el comentario anterior? –

+0

@MaciejJankowski localStorage se borra solo cuando Safari lo borra mediante la restauración de Safari o cuando lo borra en su extensión. Como no hay forma de detectar la desinstalación, no hay forma de solucionarlo después de la desinstalación. Depende del usuario limpiar su almacenamiento local, lo cual es extraño, pero así es como funciona el sistema actual. – mleyfman

+1

@MaciejJankowski, es posible que también desee examinar AppleScripts, ya que algunas extensiones populares (1Password y otras) las utilizan para agregar ganchos fuera del entorno limitado de la extensión. – mleyfman

0

Puede registrar el evento window.onunload en el script de archivo global para detectar cuándo se desinstala la extensión. Es mejor usar addEventListener() con 'descargar' ya que safari podría estar usando el evento para borrar el almacenamiento de la extensión. También asegúrese de detectar si el evento se está disparando en caso de actualización o recarga de la extensión porque en estos casos la página global también está descargada.

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