Apple Watch 用の watchapps を開発する方法を学ぼうとしていますが、少し難しいように思えます: watchapp と複雑なコントローラーの間でデータをどのように共有するのですか?
私がオンラインで見るほとんどの例は、次の順序に従っています。
1 - ExtensionDelegate でデータをダウンロードし、InterfaceController で使用します。
2 - ComplicationController を取得して、ExtensionDelegate からデータを取得します
3 - ExtensionDelegate にバックグラウンド タスクを追加して、InterfaceController と ComplicationController の両方で使用される更新されたデータをダウンロードし、両方を更新します。
したがって、私のデータは ExtensionDelegate のコレクションにあります。私は疑問に思う:
1 - アプリの起動時に、誰が最初に ExtensionController にデータをダウンロードさせる必要がありますか? 私のComplicationControllerまたは私のInterfaceController? xcodeにはこれらのそれぞれにシミュレーターがあるため、これを尋ねます。そのため、アプリの起動時に最初に呼び出されることが時々わかりません。コンプリケーションは、ユーザーがアプリを開いた後にのみライフサイクルを開始する必要があるため、最初のデータの読み込みを強制する必要がありますか?それとも、アプリのインストール後に開始する必要がありますか? または、ComplicationController または InterfaceController のいずれかが最初のデータ ダウンロードをトリガーできるように、ExtensionDelegate にフラグを追加して、データがダウンロードされていない、ダウンロードされているデータがある、使用可能なデータがある (つまり、コレクションが null でない) 場合にフラグを立てる必要がありますか?
2 - バックグラウンドでのダウンロード タスクは機能しますが、数時間にわたってアプリを開くときに、以前に開いていなかったかのようにアプリをリロードする必要があり、データの新しいダウンロードがトリガーされるように感じます。その上のデータは、既にダウンロードされ、ComplicationController によって表示されたデータとは異なります。これに取り組むための良い戦略は何ですか?何を確認する必要があるかについての指針はありますか?