1. 程式人生 > 其它 >android桌面小元件開發_OC主工程重新整理WidgetKit 桌面小元件

android桌面小元件開發_OC主工程重新整理WidgetKit 桌面小元件

技術標籤:android桌面小元件開發

當想在主工程重新整理小元件時,會使用到如下程式碼

WidgetCenter.shared.reloadAllTimelines()

1. 嘗試在 中匯入標頭檔案

2dffbebc9e45e8a969361a80c0f3aee7.png

如圖,會發現只有兩個標頭檔案,開啟標頭檔案後,找不到我們想要使用的程式碼定義。

2.由於第一步,所以我們建立 檔案,

由於主工程是純OC工程,因此建立時會提示我們建立橋接檔案。

SwiftUIAndAppDemo-Bridging-Header

3.我們需要在WidgetKitManager.swift中編寫重新整理小元件的程式碼

import [email protected]
@available(iOS 14.0, *)class WidgetKitManager: NSObject { @objc static let shareManager = WidgetKitManager() /// MARK: 重新整理所有小元件 @objc func reloadAllTimelines() { #if arch(arm64) || arch(i386) || arch(x86_64) WidgetCenter.shared.reloadAllTimelines() #endif } /// MARK: 重新整理單個小元件 /* kind: 小元件Configuration 中的kind */ @objc func reloadTimelines(kind: String) { #if arch(arm64) || arch(i386) || arch(x86_64) WidgetCenter.shared.reloadTimelines(ofKind: kind) #endif }}

4.在需要使用Swift程式碼的地方匯入標頭檔案,名字為主工程名-Swift.h

此檔案找不到,但是實際存在!

48f62268b39bef7a57b3bcad5edb22f9.png

if (@available(iOS 14.0, *)) {        [[WidgetKitManager shareManager] reloadAllTimelines];                [[WidgetKitManager shareManager] reloadTimelinesWithKind:@"Extension_Two"];    }

備註

 #if arch(arm64) || arch(i386) || arch(x86_64)            code#endif

如果不加上述程式碼,會打包報錯

重新整理單個小元件或者全部小元件根據自己的需求使用,當重新整理單個小元件時,傳入kind值。

假如傳錯或者不傳,暫未嘗試。