【Swift UI】アプリ側からWidgetを更新する方法!WidgetCenter

この記事からわかること

  • Swift UIWidgetアプリ側から更新する方法
  • WidgetCenterreloadAllTimelinesメソッドの使い方
  • sharedプロパティやreloadTimelines(ofKind:)getCurrentConfigurationsの使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

SwiftUIでWidgetを実装している場合にアプリ側からデータを更新した際にWidgetビューも更新させる方法をまとめていきます。

アプリ側からWidgetを更新する方法

アプリ側からWidgetを更新するにはWidgetCenterreloadAllTimelineメソッドを使用します。使用するためにはWidgetKitを読み込む必要があります。

import WidgetKit

WidgetCenter.shared.reloadAllTimelines()

このメソッドを実行するとWidgetを表示させるためのタイムラインが更新されます。

WidgetCenterクラス

公式リファレンス:WidgetCenterクラス

WidgetCenterWidgetの設定情報を取得したり、タイムラインを更新するための機能を提供するクラスです。

sharedプロパティ

またこのクラスはシングルトンパターンなのでアプリ内に生成するインスタンスは必ず1つであることが保証されます。

インスタンスにはsharedプロパティから参照することができます。

reloadAllTimelinesメソッド

reloadAllTimelines全てのWidgetのタイムラインを更新するメソッドです。

WidgetCenter.shared.reloadAllTimelines()

reloadTimelines(ofKind:)メソッド

reloadTimelines(ofKind:)指定した種類のWidgetのタイムラインを更新するメソッドです。引数にはWidgetの設定で指定した識別文字列(kind)を渡します。

 @main
struct TestWidget: Widget {
    let kind: String = "TestWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            TestWidgetEntryView(entry: entry)
        }
        .configurationDisplayName("My Widget")
        .description("This is an example widget.")
    }
}
WidgetCenter.shared.reloadTimelines(ofKind: "TestWidget")

getCurrentConfigurations(_:)メソッド

getCurrentConfigurations(_:)Widgetに関する設置情報を取得できるメソッドです。completionHandlerで配列形式に格納されたWidgetごとの設定情報にアクセスできるようになっています。

 func getCurrentConfigurations(_ completion: @escaping (Result<[WidgetInfo], Error>) -> Void)

配列内の要素はWidgetInfo型になっており、以下の情報を保持しています。

struct WidgetInfo {
    public let configuration: INIntent?
    public let family: InternalWidgetFamily
    public let kind: String
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index