【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を使わずこのサイトを完全自作でサイト運営中〜

自作iOSアプリ

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

mapping

自分だけの地図を作ろう!-mapping-

無料posted withアプリーチ

割り勘アプリ-bill-

旅行におすすめ!
割り勘アプリ-bill-

無料posted withアプリーチ

Imakoko

現在地を取得するアプリ!Imakoko

無料posted withアプリーチ

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Remind-シンプル通知アプリ-

シンプル通知アプリ-Remind-

無料posted withアプリーチ

CLIPURL

好きな記事をクリップしよう!-CLIPURL-

無料posted withアプリーチ

記録カレンダー

続けたを可視化できるアプリ!記録カレンダー

無料posted withアプリーチ

CART-共有できるお買い物リスト-

CART-共有できるお買い物リスト-

無料posted withアプリーチ

Githubにて
iOSアプリのソースコードを公開中!

自作Webアプリ

子育て知識共有サイト-mikata-

子育て知識共有サイト-mikata-

フレームワーク:Laravel/Vue.js

作成の流れQiita「Laravel×Vue.jsを使って初めてWebアプリを自作しました!」

感想:初めて作成したWebアプリです!メールアドレスでの会員登録や質問投稿、回答やコメント、いいねやフォローなどSNSに近い機能を実装してみました。レビューや修正すべきポイントなどを教えていただけると嬉しいです!

New Article

index