判斷小組件是否存在桌面的方法

在開發(fā)小組件時遇到獲取是否存在桌面的相關需求,通過時間戳記錄對比的方式進行判斷依賴于小組件的刷新,時效性比較差。
于是乎發(fā)現(xiàn)了這個方法,可以比較及時的獲取到是否在桌面上的方式。

@objc static func getWidgetConfigrations(widgetName: String, completion: @escaping (_ isInDeskTop: Bool) -> Void){
        guard #available(iOS 14, *) else {
            completion(false)
            return //iOS 14 以下系統(tǒng)就直接返回
        }
        let operationQueue = OperationQueue.current ?? OperationQueue.main
        #if arch(arm64) || arch(i386) || arch(x86_64)
        WidgetCenter.shared.getCurrentConfigurations { result in
            var isInDeskTop = false
            defer { operationQueue.addOperation { completion(isInDeskTop) } }
            guard case.success(let widgets) = result else { return }
            for info:WidgetInfo in widgets {
                if info.kind == widgetName {//判斷當前存在的widgets 的kind與想要獲取的widgetName是否是同一個widget kind
                    isInDeskTop = true
                    break
                }
            }
        }
        #endif
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容