大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Widget作成メモ(9)ーカレンダーイベントのリロードなど。。

著者:川上洋
公開日:2020/12/10
最終更新日:2020/12/10
カテゴリー:技術情報 雑記

こんにちは。川上です。

Swift製Myアプリのアナログ時計アプリに、SwiftUIを使ってWidgetを組み込んだのが今回の件でした。
gg巷におんぶに抱っこしてもらって、おおよそ、それなりのカッコになりましたw。

で、今回は、呟き&ぼやきモードで。。


で、Widgetの表示サイズのSとMサイズの感じでした。

でもって、Sサイズの表示には、イマイチだったので、アナログ時計を貼り付けてみました。

アナログ時計やカレンダーイベントリストのWidgetの表示更新のリロード処理は、
WidgetCenter.shared.reloadAllTimelines()
または
WidgetCenter.shared.reloadTimelines(ofKind:”・・・”)
なるヤツを貼り付けば、それなりに、Widgetの表示更新できました。

Widgetの表示更新のタイミングのデフォルトは、1時間に5回(約12分毎か?)で動いてはります。

   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も(連動?で)止まっていたので、その内、夜鍋の妖精さんが直してくれる(ハズ。。かも?)ので寝て待ちましょうかなぁ・・

ではでは。

    上に戻る