2012-05-30 20 views
9

Có cách nào để tiện ích mở rộng trình duyệt Safari phát hiện việc gỡ cài đặt riêng không?lấy sự kiện gỡ cài đặt tiện ích mở rộng ở safari

Tôi muốn gửi sự kiện đến Google Analytics để theo dõi tỷ lệ gỡ cài đặt của tiện ích mở rộng của mình.

+0

Tôi đang sử dụng localStorage để giữ trạng thái của tiện ích (= 'cần gỡ cài đặt'). Vấn đề là giá trị này không rõ ràng khi người dùng gỡ cài đặt phần mở rộng. Nếu tôi biết rằng phần mở rộng đã được gỡ cài đặt, tôi có thể xóa localStorage quay trở lại làm sạch phương tiện chặn. –

Trả lời

3

Sau khi thu thập thông tin trên diễn đàn phát triển, tôi phát hiện ra rằng dường như Safari không có sự kiện như vậy (không giống Chrome) hoặc nếu có, chúng không có giấy tờ (và do đó không được sử dụng). Tôi nghĩ rằng đặt cược tốt nhất của bạn là:

a) Yêu cầu các tính năng thông qua Apple's bug-reporting and feature-requesting site

b) Thiết lập một dịch vụ bên ngoài mà có thể giám sát ~/Library/Safari/Extensions hoặc file Extensions.plist để xóa (đó là có thể rất khó khăn, xem xét các rủi ro an ninh)

c) Theo dõi cơ sở người dùng hoạt động thay vì ping một dịch vụ bên ngoài mỗi ngày một lần hoặc vào một khoảng thời gian khác. Tỷ lệ xóa/không hoạt động sau đó có thể được ước tính bằng các giọt trong hoạt động.

+0

bất kỳ ý tưởng làm thế nào để giải quyết trường hợp sử dụng của tôi từ trên bình luận? –

+0

@MaciejJankowski localStorage chỉ được xóa khi safari xóa nó thông qua đặt lại Safari hoặc khi bạn xóa nó trong tiện ích mở rộng của mình. Vì không có cách nào để phát hiện việc gỡ cài đặt, không có cách nào để xóa nó khi gỡ cài đặt. Người dùng có thể xóa localStorage của họ, điều này thật kỳ lạ, nhưng đó là cách hệ thống hiện tại hoạt động. – mleyfman

+1

@MaciejJankowski, bạn cũng có thể muốn xem xét AppleScripts, vì một số phần mở rộng phổ biến (1Password và những người khác) sử dụng chúng để thêm móc vào bên ngoài hộp cát mở rộng. – mleyfman

0

Bạn có thể đăng ký sự kiện window.onunload trong tập lệnh tệp chung để phát hiện khi tiện ích được gỡ cài đặt. Tốt hơn để sử dụng addEventListener() với 'unload' như safari có thể sử dụng sự kiện để xóa bộ nhớ mở rộng. Ngoài ra, hãy đảm bảo phát hiện xem sự kiện có đang kích hoạt trong trường hợp cập nhật tiện ích hay tải lại vì trong những trường hợp này, trang toàn cầu cũng được tải xuống.

window.addEventListener("unload", function() { 
    //handle uninstall event 
}); 
Các vấn đề liên quan