Přejít k navigační liště

Zdroják » Mobilní vývoj » Vyvíjíme pro Apple Watch: Architektura

Vyvíjíme pro Apple Watch: Architektura

Články Mobilní vývoj

O Apple Watch se mluví tak nějak všude. Lifestylové magazíny je dávají na obálky, nadšenci je již hrdě nosí a skeptici dumají, k čemu taková hračka vůbec je. Zahálet tedy nemohou ani vývojáři. O tom, jak pro Apple Watch vyvíjet, se toho ale zatím mnoho nenapsalo. Naším seriálem to chceme změnit.

V Ackee se primárně věnujeme vývoji mobilních aplikací a všem technologiím okolo. Nemohly nám tedy uniknout ani v poslední době hojně diskutované Apple Watch. Od chvíle, kdy je Tim Cook v září loňského roku představil, sledujeme všechny novinky, zkoumáme a zkoušíme, co všechno zatím hodinky umí a k čemu by se daly využít. O nabyté zkušenosti se s vámi chceme podělit v tomto třídílném seriálu o vývoji aplikací pro Apple Watch.

V tomto úvodním díle se budeme věnovat architektuře samotných aplikací, jejich možnostem a omezením, příště se podíváme, jak vytvořit projekt a jak nastavit simulátor. V poslední části seriálu si zkusíme napsat jednoduchou aplikaci a ukázat si na ní hlavní principy a postupy vývoje.

3 podoby aplikace

Na začátek se podíváme, jak vlastně mohou aplikace pro Apple Watch vypadat. Každá aplikace se totiž na displeji hodinek může objevovat ve třech podobách. Tou hlavní je samotná aplikace, kterou uživatel otevírá z domovské obrazovky. Ta může obsahovat celou hierarchii obrazovek a komplexní uživatelské rozhraní, přes které uživatel interaguje s daty aplikace.

Další podobou je tzv. rozhraní glance, což je jedna informační obrazovka, na které jsou zobrazeny nejdůležitější aktuální informace. Obrazovka je read-only, takže ji nelze scrollovat, neobsahuje žádné ovládací prvky a neumožňuje žádnou interakci. Může na ní být například aktuální teplota nebo v případě našeho App4Festu čas zbývající do dalšího koncertu.

Rozhraní Glance v Apple Watch

Rozhraní Glance v Apple Watch

Poslední podobou je notifikační obrazovka, kterou můžeme jako vývojáři přizpůsobovat pro naše konkrétní potřeby.

Architektura

Aplikace třetích stran v hodinkách nefungují samostatně. Pro svůj běh totiž potřebují iPhone spárovaný přes bluetooth, což úzce souvisí právě s architekturou a principem fungování samotných aplikací. Aplikace pro hodinky se skládá ze dvou, respektive ze tří částí.

První zásadní částí je WatchKit App, která běží na hodinkách, a druhou částí je WatchKit Extension, která běží na iPhonu. Třetí částí je pak „mateřská aplikace“ v iPhonu, protože aplikace v hodinkách je vnímána jako její doplněk a je dodávána jako součást jejího bundlu (rozšíření). Samostatně tedy aplikace pro hodinky nemůže existovat.

Nás pochopitelně zajímá především WatchKit App a WatchKit Extension. Watchkit App, která je fyzicky uložena přímo v hodinkách, obsahuje pouze definici uživatelského rozhraní ve formě storyboardu, nenajdeme v ní tedy žádnou funkční logiku, žádný spustitelný kód. Veškerou logiku obstarává právě WatchKit Extension, která je uložena v iPhonu jako součást „mateřské aplikace“. Všechny uživatelské akce a události jsou pomocí bluetooth spojení delegovány do iPhonu, kde jsou vyhodnocovány a zpracovávány.

Spolupráce WatchKit App a WatchKit Extension

Jak již bylo řečeno, WatchKit App obsahuje pouze storyboard, grafické prvky ve formě obrázků a sadu ikon. Při interakci uživatele s hodinkami WatchKit App vybere scénu ze storyboardu odpovídající dané akci a pomocí WatchKitu v telefonu spustí WatchKit Extension. Ta se postará o konfiguraci scény a až poté je hotová scéna zobrazena na displeji hodinek.

Spolupráce WatchKit App a WatchKit Extension

Spolupráce WatchKit App a WatchKit Extension

Tento proces výměny informací obstarává WatchKit sám a programátor je od něj zcela odstíněn. Při vývoji tedy používáme standardní postupy jako při vývoji běžných iOS aplikací. Objekty ve storyboardu svazujeme s kódem pomocí outletů a akcí a v kódu k nim potom můžeme přistupovat a konfigurovat je. Jediným zásadním rozdílem je nemožnost vytvářet uživatelské rozhraní dynamicky v kódu. Klasické vytvoření UIView v kódu a jeho následné přidání do view hierarchie zde není možné a z hlediska uživatelského rozhraní jsme tedy odkázáni čistě na storyboard.

Možnosti a omezení

V porovnání s vývojem klasických iOS aplikací jsou Apple Watch značně omezené. S největším množstvím omezení se jako vývojáři musíme potýkat v oblasti uživatelského rozhraní.

Storyboardy pro hodinky využívají svoji vlastní sadu UI prvků, která je sice analogií běžných prvků z UIKitu, ale obsahuje jich mnohem méně a nabízí o mnoho méně možností. Všechny tyto prvky jsou potomky třídy WKInterfaceObject a není možné je inicializovat ručně, jsou vytvářeny ze storyboardu a my k nim můžeme přistupovat pouze pomocí outletů a navazovat na ně akce.

Celé UI tedy musí být definováno předem, jediné možné úpravy UI v runtime jsou změny hodnot (např. text labelu apod.), změna velikosti objektu, skrytí/odkrytí objektu a nastavení průhlednosti. Zatímco na iOS jsme odpovědní za veškerý layout a díky přístupu k frame nebo autolayoutu můžeme UI do detailu upravovat, na hodinkách pouze vkládáme objekty do scény a Xcode je automaticky skládá jako bloky vertikálně pod sebe.

Příklad layoutu pomocí grup

Příklad layoutu pomocí grup

Zásadní prvek, kterým můžeme layout ovlivňovat, je WKInterfaceGroup, což je kontejner obsahující více objektů. Objekty v tomto kontejneru mohou být uspořádány jak vertikálně, tak horizontálně a mohou být i vkládány do sebe navzájem.

Na první pohled se tedy zdá, že je UI až příliš striktně omezené, ale po chvilce hraní si v Interface Builderu a s trochou kreativity lze vytvořit téměř cokoliv. Cesta sice není tak přímá a jasná jako na iOS, ale schopný vývojář si dokáže poradit.

V příštím díle

Dnes jsme si prošli nezbytnou teorii, ale už příště se vrhneme do praxe. Ukážeme si, jak vytvořit projekt, jak nastavit simulátor a další základní nástroje pro vývoj aplikace pro Apple Watch. Všechny nové znalosti pak využijeme v posledním díle, ve kterém si společně naprogramujeme jednoduchou hodinkovou aplikaci.

Ackee

Ackee je inovativní vývojářské studio se sídlem v pražských Dejvicích. Zabýváme se vývojem mobilních aplikací, webů a vlastních produktů, jako je například aplikace pro festivaly App4Fest.

Komentáře

Odebírat
Upozornit na
guest
2 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
PH

UI je sice pevně dané storyboardem, ale do WKInterfaceTable se dá nacpat cokoliv včetně buněk s dynamickou velikostí, takže programaticky se dá implementovat prakticky cokoliv. Ale předpokládám, že něco takového se v některém z příštích dílů objeví.
(Doufám, že se autor bude věnovat také WatchOS 2.)

Josef Gattermayer

Ano, WatchOS 2 bude :).

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.