2012-05-30 11 views
9

Safariブラウザ拡張機能が独自のアンインストールを検出する方法はありますか?サファリで拡張機能のアンインストールイベントを取得する

Googleアナリティクスにイベントを送信して、内線番号のアンインストールレートを把握したいとします。

+0

私はlocalStorageを使用して拡張機能の状態を維持しています(= 'uninstallが必要です')。問題は、ユーザーがextをアンインストールしたときにこの値がクリアされないことです。拡張機能がアンインストールされたことが分かっていれば、私はlocalStorageをクリーンスレートに戻すことができます。 –

答えて

3

開発フォーラムを巡回した後、私は明らかにSafariに(Chromeとは違った)そのような出来事がないか、または何かがある場合、それらは文書化されていない(したがって使用されることはない)である(〜/ライブラリ/サファリ/ Extensionsまたは削除のためにExtensions.plistファイルを監視することができ、外部サービスを設定

a)の要求Apple's bug-reporting and feature-requesting site

Bを介した機能):私はあなたの最高の賭けであると思います

c)1日に1回または他の間隔で外部サービスにpingを実行する代わりに、アクティブなユーザーベースを追跡します。次いで、活性の低下によって、欠失/非活性化率を推定することができる。

+0

上記のコメントから私のユースケースを解決する方法はありますか? –

+0

@MaciejJankowski localStorageはSafariをリセットしてSafariをクリアしたとき、または拡張機能でクリアしたときにのみクリアされます。アンインストールを検出する方法はないので、アンインストール時にアンインストールをクリアする方法はありません。 localStorageをクリアするのはユーザーの責任ですが、これは変ですが、それが現在のシステムの仕組みです。 – mleyfman

+1

@MaciejJankowskiでも、人気のある拡張機能(1Passwordなど)が拡張子サンドボックスの外にフックを追加するために、AppleScriptを調べることもできます。 – mleyfman

0

グローバルファイルスクリプトにwindow.onunloadイベントを登録して、拡張機能をアンインストールするタイミングを検出できます。 Safariが拡張ストレージをクリアするためにイベントを使用している可能性があるので、addEventListener()に 'unload'を使用する方が良いでしょう。また、これらのケースではグローバルページもアンロードされるため、エクステンションの更新またはリロードの場合にイベントが発生しているかどうかを検出するようにしてください。

window.addEventListener("unload", function() { 
    //handle uninstall event 
}); 
関連する問題