2016-03-24 10 views
0

requestedUpdateDidBegin機能でアクティブな合併症を条件付きで再読み込みするか、ClockKitに現在のタイムラインエントリの最後の15分前に次のチェックを設定するように指示しますが、現在の合併症の内容を知らずにどうすればよいでしょうか?私は家族を得ることができ、現在の合併症のためにアクティブな合併症に使用されるタイムラインエントリとテンプレートを取得しますか?

if let complications = CLKComplicationServer.sharedInstance().activeComplications { 
     for item in complications { 
      // Get timeline entry and template used? 
     } 
    } 

が、タイムラインの日付またはテンプレートのような他の情報を使用しない:

は、ここで私は何をしようとしているのです。これを得る方法はありますか?

+0

私は現在の合併症のためにリングをリフレッシュしようとしています。実際には、現在のタイムラインのエントリを取得し、有効期限が切れる前に15分前に更新したいと思います。それ以外の場合、リングはかなり古くなり、30分ごとにリフレッシュできます。例えば、相対的な日付で塗りつぶし部分を埋めることができればいいでしょう。私の複雑さは、リングとして表示されるタイマーのようなものです。 – TruMan1

+0

残念ながら、相対的な塗りつぶし部分のサポートはありません。 [Feature request it。](https://bugreport.apple.com/)しかし、あなたが 'getCurrentTimelineEntryForComplication'を提供していれば、それをややフレッシュに保つために最低10分のスケジュールアップデート間隔を使うことができます。現在のエントリの日付をオフセットすることで、解答で説明したように更新します。 –

+0

説明とアプローチのおかげで、あなたが言及しているように、現在のタイムライン機能が動作します。その間に機能リクエストを記入しました。 – TruMan1

答えて

1

The complication serverは、複雑なコントローラからデータを要求しますが、タイムラインデータを提供するようには設計されていません。あなたがサーバーから知ることができるのは、最も早い、そして最も遅い旅行日です。

最初にタイムラインエントリを作成するために使用した元のデータからタイムラインの詳細を取得する必要があります。

最後のエントリの最後の15分前に更新をスケジュールすると、以前のリロード要求の一部として、そのスケジュールを非常に簡単に行うことができます。複雑なサーバーが要求する最後のもの(タイムラインをリロードまたは拡張した後)は、次の更新日です。

getTimelineEntriesForComplication:afterDate:の将来のタイムラインエントリを尋ねてきたので、最後のタイムラインエントリの日付を書き留めて15分オフセットしてから、getNextRequestedUpdateDateWithHandlerが一度呼び出されると新しい日付を返します。

関連する問題