Sdílet prostřednictvím


Komplikace watchOS v Xamarinu

WatchOS umožňuje vývojářům psát vlastní komplikace pro ciferníky

Tato stránka vysvětluje různé typy dostupných komplikací a jak přidat komplikaci aplikace watchOS 3.

Všimněte si, že každá aplikace watchOS může mít pouze jednu komplikaci.

Začněte tím, že si přečtete dokumentaci společnosti Apple a zjistíte, jestli je vaše aplikace vhodná pro komplikaci. Můžete si vybrat z 5 CLKComplicationFamily typů zobrazení:

The 5 CLKComplicationFamily types available: Circular Small, Modular Small, Modular Large, Utilitarian Small, Utilitarian Large

Aplikace můžou v závislosti na zobrazených datech implementovat jenom jeden styl nebo všech pět. Můžete také podporovat funkci Time Travel, která poskytuje hodnoty pro minulé a/nebo budoucí časy, když uživatel změní digitální korunu.

Přidání komplikace

Konfigurace

Během vytváření můžete do aplikace kukátku přidat komplikace nebo je do existujícího řešení přidat ručně.

Přidat nový projekt...

Průvodce Přidat nový projekt... obsahuje zaškrtávací políčko, které automaticky vytvoří třídu kontroleru komplikací a nakonfiguruje soubor Info.plist :

The Include Complication checkbox

Existující projekty

Přidání komplikací do existujícího projektu:

  1. Vytvořte nový soubor třídy ComplicationController.cs a implementujte CLKComplicationDataSource.
  2. Nakonfigurujte soubor Info.plist aplikace tak, aby zpřístupnil komplikaci a identitu, kterou podporují rodiny komplikací.

Tyto kroky jsou podrobněji popsány níže.

CLKComplicationDataSource – třída

Následující šablona jazyka C# obsahuje minimální požadované metody implementace CLKComplicationDataSource.

[Register ("ComplicationController")]
public class ComplicationController : CLKComplicationDataSource
{
  public ComplicationController ()
  {
  }
  public override void GetPlaceholderTemplate (CLKComplication complication, Action<CLKComplicationTemplate> handler)
  {
  }
  public override void GetCurrentTimelineEntry (CLKComplication complication, Action<CLKComplicationTimelineEntry> handler)
  {
  }
  public override void GetSupportedTimeTravelDirections (CLKComplication complication, Action<CLKComplicationTimeTravelDirections> handler)
  {
  }
}

Postupujte podle pokynů pro komplikaci pro přidání kódu do této třídy.

Info.plist

Soubor Info.plist rozšíření kukátek by měl obsahovat název CLKComplicationDataSource a které komplikace rodin, které chcete podporovat:

The complication family types

Seznam položek třídy zdroje dat zobrazí názvy tříd, které podtřídy CLKComplicationDataSource , které zahrnují vaši logiku komplikací.

CLKComplicationDataSource

Všechny funkce komplikací se implementují v jedné třídě, přepisují metody z CLKComplicationDataSource abstraktní třídy (která implementuje ICLKComplicationDataSource rozhraní).

Požadované metody

Aby se komplikace spustila, musíte implementovat následující metody:

  • GetPlaceholderTemplate – Vrátí statický displej použitý během konfigurace nebo když aplikace nemůže zadat hodnotu.
  • GetCurrentTimelineEntry - Výpočet správného zobrazení, když je komplikace spuštěna.
  • GetSupportedTimeTravelDirections - Vrátí možnosti, CLKComplicationTimeTravelDirections například None, Forward, Backwardnebo Forward | Backward.

Ochrana osobních údajů

Komplikace, které zobrazují osobní údaje

  • GetPrivacyBehavior - CLKComplicationPrivacyBehavior.ShowOnLockScreen nebo HideOnLockScreen

Pokud tato metoda vrátí HideOnLockScreen , komplikace zobrazí buď ikonu, nebo název aplikace (a ne žádná data) při uzamčení kukátku.

Aktualizace

  • GetNextRequestedUpdateDate – Vrátí čas, kdy by operační systém měl příště dotazovat aplikaci na aktualizovaná data zobrazení komplikací.

Aktualizaci můžete také vynutit z aplikace pro iOS.

Podpora časového cestování

Podpora časového cestování je volitelná a řízená metodou GetSupportedTimeTravelDirections . Pokud vrátí Forward, Backwardnebo Forward | Backward pak musíte implementovat následující metody

  • GetTimelineStartDate
  • GetTimelineEndDate
  • GetTimelineEntriesBeforeDate
  • GetTimelineEntriesAfterDate

Psaní komplikací

Komplikace se liší od jednoduchého zobrazení dat až po složité vykreslování obrázků a dat pomocí podpory Time Travel. Následující kód ukazuje, jak vytvořit jednoduchou komplikaci s jednou šablonou.

Ukázka kódu

Tento příklad podporuje UtilitarianLarge pouze šablonu, takže je možné vybrat pouze u konkrétních ciferníků, které podporují tento typ komplikací. Při výběru komplikací na hodinkách se zobrazí MOJE KOMPLIKACE a při spuštění se zobrazí text MINUTA(s částí času).

[Register ("ComplicationController")]
public class ComplicationController : CLKComplicationDataSource
{
    public ComplicationController ()
    {
    }
    public ComplicationController (IntPtr p) : base (p)
    {
    }
    public override void GetCurrentTimelineEntry (CLKComplication complication, Action<CLKComplicationTimelineEntry> handler)
    {
        CLKComplicationTimelineEntry entry = null;
    var complicationDisplay = "MINUTE " + DateTime.Now.Minute.ToString(); // text to display on watch face
        if (complication.Family == CLKComplicationFamily.UtilitarianLarge)
        {
            var textTemplate = new CLKComplicationTemplateUtilitarianLargeFlat();
            textTemplate.TextProvider = CLKSimpleTextProvider.FromText(complicationDisplay); // dynamic display
            entry = CLKComplicationTimelineEntry.Create(NSDate.Now, textTemplate);
        } else {
            Console.WriteLine("Complication family timeline not supported (" + complication.Family + ")");
        }
        handler (entry);
    }
    public override void GetPlaceholderTemplate (CLKComplication complication, Action<CLKComplicationTemplate> handler)
    {
        CLKComplicationTemplate template = null;
        if (complication.Family == CLKComplicationFamily.UtilitarianLarge) {
            var textTemplate = new CLKComplicationTemplateUtilitarianLargeFlat ();
            textTemplate.TextProvider = CLKSimpleTextProvider.FromText ("MY COMPLICATION"); // static display
            template = textTemplate;
        } else {
            Console.WriteLine ("Complication family placeholder not not supported (" + complication.Family + ")");
        }
        handler (template);
    }
    public override void GetSupportedTimeTravelDirections (CLKComplication complication, Action<CLKComplicationTimeTravelDirections> handler)
    {
        handler (CLKComplicationTimeTravelDirections.None);
    }
}

Šablony komplikací

Pro každý styl komplikací je k dispozici celá řada různých šablon. Šablony okruhů umožňují zobrazit kruh ve stylu průběhu kolem komplikace, která se dá použít k zobrazení průběhu nebo jiné hodnoty graficky.

Dokumentace k CLKComplicationTemplate společnosti Apple

Kruhový malý

Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateCircularSmall:

  • RingImage – zobrazí jeden obrázek s kruhem průběhu kolem něj.
  • RingText – zobrazí jeden řádek textu s kruhem průběhu kolem něj.
  • SimpleImage – Stačí zobrazit malý jeden obrázek.
  • SimpleText – Stačí zobrazit malý fragment textu.
  • StackImage – zobrazení obrázku a řádku textu, jednoho nad druhým
  • StackText – zobrazí dva řádky textu.

Modulární malý

Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateModularSmall:

  • ColumnsText – zobrazí malou mřížku textových hodnot (2 řádky a 2 sloupce).
  • RingImage – zobrazí jeden obrázek s kruhem průběhu kolem něj.
  • RingText – zobrazí jeden řádek textu s kruhem průběhu kolem něj.
  • SimpleImage – Stačí zobrazit malý jeden obrázek.
  • SimpleText – Stačí zobrazit malý fragment textu.
  • StackImage – zobrazení obrázku a řádku textu, jednoho nad druhým
  • StackText – zobrazí dva řádky textu.

Modulární velký

Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateModularLarge:

  • Sloupce – zobrazí mřížku 3 řádků se 2 sloupci, volitelně včetně obrázku vlevo od každého řádku.
  • StandardBody – zobrazí tučný řetězec záhlaví se dvěma řádky prostého textu. Záhlaví může volitelně zobrazit obrázek vlevo.
  • Tabulka – Zobrazí tučný řetězec záhlaví s mřížkou textu o velikosti 2x2 pod ní. Záhlaví může volitelně zobrazit obrázek vlevo.
  • TallBody – Zobrazí tučný řetězec záhlaví s větším písmem, pod kterým je jeden řádek textu.

Utilitarian Small

Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateUtilitarianSmall:

  • Ploché – zobrazí obrázek a nějaký text na jednom řádku (text by měl být krátký).
  • RingImage – zobrazí jeden obrázek s kruhem průběhu kolem něj.
  • RingText – zobrazí jeden řádek textu s kruhem průběhu kolem něj.
  • Čtverec – Zobrazí čtvercový obrázek (40px nebo 44px square for the 38mm nebo 42mm Apple Watch).

Utilitarian Large

Pro tento styl komplikací existuje pouze jedna šablona: CLKComplicationTemplateUtilitarianLargeFlat. Zobrazí jeden obrázek a nějaký text, a to vše na jednom řádku.