0

Ich möchte meine aktive Komplikation in der requestedUpdateDidBegin Funktion bedingt neu laden oder sage ClockKit, um die nächste Überprüfung 15 Minuten vor dem Ende des aktuellen Zeitachseneintrags zu setzen, aber wie kann ich das tun, ohne zu wissen, was in der aktuellen Komplikation ist?Erhalte Timeline-Eintrag und Vorlage für aktive Komplikation?

Hier ist, was ich versuche zu tun:

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

Für die aktuelle Komplikation, kann ich nur die Familie, aber keine anderen Informationen wie Timeline Datum oder eine Vorlage verwendet. Gibt es eine Möglichkeit, das zu bekommen?

+0

Ich versuche, den Ring für die aktuelle Komplikation zu aktualisieren. Eigentlich möchte ich den aktuellen Timeline-Eintrag erhalten und ihn 15 Minuten vor Ablauf aktualisieren. Ansonsten wird der Ring ziemlich schnell verbraucht und kann nur etwa alle 30 Minuten aktualisiert werden. Es wäre schön, wenn ich den Füllanteil zum Beispiel mit einem relativen Datum füllen könnte. Meine Komplikation ist fast wie ein Timer, der als Ring angezeigt wird. – TruMan1

+0

Leider gibt es keine Unterstützung für relative Füllanteile. [Feature request it.] (Https://bugreport.apple.com/) Aber wenn Sie nur "getCurrentTimelineEntryForComplication" bereitstellen, könnten Sie (verwenden Sie das mindestens 10-minütige geplante Update-Intervall, um es etwas frisch zu halten, oder) planen Sie die Aktualisieren Sie wie in der Antwort erläutert, indem Sie das Datum des aktuellen Eintrags verrechnen. –

+0

Danke für die Erläuterungen und Ansatz, aktuelle Timeline-Funktion wird funktionieren, wie Sie erwähnen. Ich habe in der Zwischenzeit eine Feature-Anfrage ausgefüllt. – TruMan1

Antwort

1

The complication server fordert Daten von Ihrem Komplikations-Controller an, aber es ist nicht dafür ausgelegt, Ihnen die Daten der Zeitachse zur Verfügung zu stellen. Alles, was Sie vom Server herausfinden können, sind die frühesten und spätesten Zeitreisedaten.

Sie müssten Timeline-Details aus den Originaldaten erhalten, die Sie zum Erstellen der Timeline-Einträge verwendet haben.

Wie für die Planung Ihres Updates 15 Minuten vor dem Ende des letzten Eintrags, können Sie sehr einfach planen, dass als Teil der vorherige Nachladeanforderung. Das letzte, was der Komplikationsserver anfordert (nach dem erneuten Laden oder Erweitern der Zeitleiste), ist das nächste Aktualisierungsdatum.

Da die Komplikationsrate Server hat gerade Sie für die Zukunft Timeline Einträge in getTimelineEntriesForComplication:afterDate: gefragt, können Sie Kenntnis von der letzten Zeitleiste Eintrags Datum machen, versetzt es um 15 Minuten, dann, dass neue Datum zurück, sobald getNextRequestedUpdateDateWithHandler momentan aufgerufen wird.

Verwandte Themen