Widget作成メモ(9)ーカレンダーイベントのリロードなど。。
こんにちは。川上です。
Swift製Myアプリのアナログ時計アプリに、SwiftUIを使ってWidgetを組み込んだのが今回の件でした。
gg巷におんぶに抱っこしてもらって、おおよそ、それなりのカッコになりましたw。
で、今回は、呟き&ぼやきモードで。。
でもって、Sサイズの表示には、イマイチだったので、アナログ時計を貼り付けてみました。
アナログ時計やカレンダーイベントリストのWidgetの表示更新のリロード処理は、
・WidgetCenter.shared.reloadAllTimelines()
または
・WidgetCenter.shared.reloadTimelines(ofKind:”・・・”)
なるヤツを貼り付けば、それなりに、Widgetの表示更新できました。
Widgetの表示更新のタイミングのデフォルトは、1時間に5回(約12分毎か?)で動いてはります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | func getTimeline(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> ()) { var entries: [SimpleEntry] = [] // Generate a timeline consisting of five entries an hour apart, starting from the current date. // 現在の時間から開始して、1時間おきに切り替わる5つのEntryで構成されるタイムラインを生成 let currentDate = Date() for hourOffset in 0 ..< 5 { // hourOffset時間後の時間を生成 let entryDate = Calendar.current.date(byAdding: .hour , value: hourOffset , to: currentDate)! ・・・・ } ・・・・ } |
シカ〜シ、新規のカレンダーイベントを追加した時、アプリ内側での表示は取得されていたけど、Widgetの表示更新は、なかなか、しよらんのんです。
Widgetの表示更新を待っているのが我慢できず、アプリ内側でカレンダーイベントを取得した時、即時更新をしたのでした。
WidgetをタップしてMyアプリが起動するタイミングで、WidgetCenter.shared.・・の発行してみると、Widgetのカレンダーイベントの表示確認が、即、できましたw。
カレンダーイベントの更新は、多分OKだけど、アナログ時計の時刻の更新は、それなりに動けそーだったけど、NGでした。。。 (T . T)’。。
シミュレータは動いたけど、実機では、たまに、内蔵時計アプリのWigdetも(連動?で)止まっていたので、その内、夜鍋の妖精さんが直してくれる(ハズ。。かも?)ので寝て待ちましょうかなぁ・・
ではでは。