簡體   English   中英

如何檢測用戶何時在 Safari 首選項中啟用或禁用擴展

[英]How to detect when user Enable or Disable extension in Safari preferences

如何檢測用戶何時在 Safari 首選項中啟用或禁用擴展? 當用戶啟用/禁用我的擴展程序時,我很高興立即收到通知。

您可以使用SFSafariExtensionManagergetStateOfSafariExtension(withIdentifier:completionHandler:)方法獲取 Safari 應用程序擴展的 state:

SFSafariExtensionManager.getStateOfSafariExtension(withIdentifier: "com.example") { state, error in
    guard let state = state, error == nil else { return }

    if state.isEnabled {
        // todo
    } else {
        // todo
    }
}

您寫道,您希望立即收到有關狀態更改的通知。 據我所知,您沒有可以觀察到的通知。 因此,您應該寫更多關於為什么要立即收到通知的信息。

如果你想更新你的 UI,你不應該觀察你的擴展程序的狀態,而是在你的應用程序激活時做出反應。 例如,您可以這樣做:

NotificationCenter.default.addObserver(self, selector: #selector(detectStateOfSafariAppExtension), name: NSApplication.willBecomeActiveNotification, object: nil)

如果要運行后台操作,則必須實施一個愚蠢的解決方法。 因為沒有發送通知,所以您必須輪詢。 這應該盡可能有效地實現,並且在很大程度上取決於您的用例。 不幸的是,沒有更好的方法。 例如,您可以使用計時器:

Timer(timeInterval: 5.0, repeats: true) { _ in
    // todo
}

請注意,輪詢不是一個好的解決方案。 不幸的是,我不知道您為什么要立即收到通知,因此我無法為您提供更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM