2012-05-30 10 views
9

Gibt es eine Möglichkeit, dass eine Safari-Browsererweiterung eine eigene Deinstallation erkennt?Extension-Deinstallationsereignis in Safari erhalten

Ich möchte ein Ereignis an Google Analytics senden, um die Deinstallationsrate meiner Erweiterung zu verfolgen.

+0

Ich verwende localStorage, um den Status der Erweiterung beizubehalten (= 'muss Deinstallation'). Problem ist, dass dieser Wert nicht gelöscht wird, wenn der Benutzer die ext. Wenn ich wüsste, dass die Erweiterung deinstalliert wurde, könnte ich localStorage löschen und auf "unbelegt" zurückkehren. –

Antwort

3

Nachdem ich in den Entwicklungsforen herumgekrochen bin, habe ich herausgefunden, dass Safari anscheinend keine solchen Ereignisse hat (anders als Chrome) oder falls es welche gibt, sind sie undokumentiert (und daher nicht dazu gedacht). Ich denke, Ihre besten Wetten sind:

a) Anforderung der Funktion über Apple's bug-reporting and feature-requesting site

b) einen externen Service einrichten, die ~/Library/Safari/Extensions oder die Extensions.plist Datei zum Löschen überwachen kann (was wahrscheinlich sehr schwierig, unter Berücksichtigung der Sicherheitsrisiken)

c) Behalten Sie die aktive Benutzerbasis im Auge, indem Sie einmal täglich oder in einem anderen Intervall einen externen Dienst anpingen. Die Lösch-/Inaktivitätsrate kann dann durch Aktivitätsabfälle geschätzt werden.

+0

irgendwelche Ideen, wie ich meinen Anwendungsfall von oben lösen Kommentar? –

+0

@MaciejJankowski localStorage wird nur gelöscht, wenn die Safari über die Safari zurückgesetzt wird oder wenn Sie sie in Ihrer Nebenstelle löschen. Da es keine Möglichkeit gibt, die Deinstallation zu erkennen, gibt es keine Möglichkeit, sie bei der Deinstallation zu löschen. Es ist Sache des Benutzers, seine localStorage zu löschen, was seltsam ist, aber so funktioniert das aktuelle System. – mleyfman

+1

@MaciejJankowski, möchten Sie vielleicht auch in AppleScripts schauen, da einige populäre Erweiterungen (1Password und andere) sie verwenden, um außerhalb der Erweiterungs-Sandbox Hooks hinzuzufügen. – mleyfman

0

Sie können das Ereignis window.onunload im globalen Dateiskript registrieren, um zu erkennen, wenn die Erweiterung deinstalliert wird. Besser ist es, addEventListener() mit 'unload' zu verwenden, da Safari das Ereignis zum Löschen des Erweiterungsspeichers verwenden könnte. Stellen Sie außerdem sicher, dass das Ereignis ausgelöst wird, wenn die Erweiterung aktualisiert oder neu geladen wird, da in diesen Fällen auch die globale Seite entladen wird.

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