Most mindenki az Apple Watch-ra gyártja a programokat világszerte, és remélhetőleg a magyar fejlesztők is hamar portolják a készülékre a már meglévő hasznos appjukat. A Twitteren nemrég megláttam egy képet, ami erről tanúskodott. Ez volt az:

img_2402.JPG

Czo tette ki, akit megkerestem, meséljen kicsit a látottakról. Következzen az interjú a fejlesztővel, aki az Apple Watch miatt kezdett iOS-re appot gyártani. Pár nap alatt belejött.

Szóval láttam a menetrendes alkalmazást a csuklódon. Mi ez? Megbízásból készül?

Saját magamnak készül elsősorban. Az órát csak kipróbálás céljából vettem meg, és úgy voltam vele, hogy ha nem jön be, akkor tuti találok rá vevőt. Megtetszett a szerkezet, így rögtön jött az ötlet, hogy erre az appra nekem szükségem van a csuklómon is.

Mit tud majd az app?

Három részt tervezek megvalósítani. Ugye jelen formában nincs lehetőség csak órán futó appot készíteni, mindenképpen szükséges egy sima iOS appot is gyártani. Így ez lenne az egyik rész. A másik rész, természetesen az órán futó app, a harmadik pedig azok számára készül, akiknek nincs órájuk, ez a Today widget. Olyan helyen lakom, ahol az elinduláshoz több megálló közül is választhatok, és ez mind 250 méteren belül van, így az az ötletem támadt, hogy egy összesített listára van szükségem, a pozíciómtól 250 méteren belül levő megállók indulási idejéről. Tehát egyetlen listából áll az egész, ahol ezeket az időpontokat tudod megnézni. Se térkép, se semmi, csak az aktuálisan legfontosabb információk, de a Futár információit is felhasználva, szóval a késések is látszanak.

img_2404.PNG

Megyek az utcán, zsebemben a telefon, ránézek az órára, és elindítom az appot. Ezután mi történik pontosan, technikailag? Melyik eszköz kinek küld mit?

Alapvetően az óra buta, nagyon buta, a jelenlegi API készlettel. Az alkalmazás storyboardja (screenek leírása), és a használandó hangeffektek, képek, animációk kerülnek az órádra egy-egy app telepítésekor. Amikor elindítasz egy alkalmazást az órádon, a telefonon elindul, felébred az alkalmazáshoz tartozó WatchKit Extension-nek nevezett modul. Ez egy teljesen független valami a hagyományos iOS-apptól, így alapból az alap app adataihoz sem fér hozza - külön jogkörrel persze ez is megoldható. Ennek az extensionnek a feladata levezényelni a képernyő elemeinek az összerakását, majd a megjelenést az órán. Azt meg nem sikerült teljesen lemernem, hogy ez WiFi vagy hagyományos Bluetooth kapcsolatot használ. Ha a képernyő megjelenése után bármilyen eseményt indukálsz az órádon, akkor az óra továbbítja az eseményt a telefonon futó WatchKit Extensionnek, és minden munka a telefonon zajlik. Az Apple lehetőséget biztosít arra, hogy egy WatchKit Extension felébressze a sima alkalmazás egy háttérszálát, és a hosszabb lélegzetvételű feladatokat ebben kell végrehajtani. Ez az esetemben is így van, a lokáció lekérdezése, és a BKK API kommunikációja is egy ilyen háttérszálban zajlik. Tehát nagy vonalakban

- tap az app ikonra az órán
- az órán megjelenik egy töltésjelző teljes képernyős animáció
- watchkit extension elindul
- az extension összeállítja a megjelenő képernyőt
- ez a képernyő megjelenik az órán, a korábban látott utolsó tartalommal
- a Watchkit extension felébreszti a fő appot
- a fő appban elindul egy lokáció keresés, a keresés sikeressége eseten a BKK adatok összeszedése
- a fő app visszaadja az adatokat a Watchkit extensionnek
- a Watchkit extension összeállítja az új adatokkal a screent, majd elküldi az órának
- az óra frissíti a táblázatot a csuklódon

Hol tart a projekt? Mikor lesz kész?

Már beadtam engedélyezésre, hamarosan megjelenik.

Hallottam, hogy te nem fejlesztettél még iOS-re, de pár nap alatt felszívtad magad a kellő tudással, beleértve a WatchKitet is. Ez igaz? Ennyire egyszerű az átállás?

Ez egy kicsivel összetettebb kérdés. ObjectiveC-t sohasem használtam, és úgy döntöttem, hogy ezt sem ebben fogom elkezdeni, így nem csak a környezettel (iOS/WatchKit/Extensionok) ismerkedem, hanem magával a Swift nyelvvel is. Maga az órás app elkészítése egyszerű volt, és a dizájnt is egyszerű volt összekalapálni az órára. Amivel meggyűlt a bajom, az az iOS Widget design összerakása, a telefonok felbontásainak kezelése, és emiatt az egész layout összerakása. Egyébként a pár nap igaz, kábé két nap alatt eljutottam oda, hogy a BKK API-tól össze tudom szedni a válaszokat, és ezt egy formázatlan táblázatba bele tudom önteni, szóval tényleg nem nehéz.

img_2407.PNG

Mivel foglalkoztál eddig?

Alapvetően rendszerüzemeltetéssel és fejlesztessél foglalkozom. Mivel régóta foglalkozom utóbbival, így nem volt nehéz megtanulni egy új nyelvet. Szerintem nem is a nyelv jelenti a kihívást, hanem a nyelv mellé kapott eszközkészlet ismerete, például a WatchKit, UIKit és egyéb frameworkok. Jelen esetben nehezítő körülmény a Swift is, hiszen rengeteg felmerült problémára elsőre mindig ObjectiveC megoldásokat dob a gugli.

Az Instapaper fejlesztője nemrég kikelt, hogy a WatchKiten keresztül problémája van a fejlesztéssel: a BT kapcsolat megbízhatatlansága miatt sokat kell várni, vagy a töltésre, vagy megmagyarázhatatlan leállás miatti homokórázásra. Ez nálad is így van?

Leállásaim csak crash miatt voltak, egyéb esetben stabilan működik a telefon-watch kommunikáció. Nem érzem lassúnak a felületet, és az egész működését sem. Az biztos viszont, hogy nem olyan villámgyors, mint az iPhone 6-om, de ezt betudom annak, hogy első SW verzió és első hardver generáció. Ráadásul, a WatchOS 1.0-t az Xcode iOS 8.2-nek ismeri, tehát itt is van mar 0.1 verziónyi lemaradás. Minden olyan appnál várni kell valamennyit, ami a telefont használja, ilyenkor vagy totál fekete minden, vagy kapsz egy kis töltés animációt. Ugye el kell indítani a WatchKit Extensiont, valamint ha hosszabb lélegzetvételű feladatra készülsz (például lokáció, vagy http hívás), akkor el kell indítani a telefonon a megfelelő app egyik háttérszálat is, így elképzelhető, hogy iPhone 6 mellett gyorsabb az óra működése, mintha 5 vagy 5S lenne párosítva vele. Az az app, amit mar korábban megnyitottál, az hamarabb fog legközelebb elindulni, és szinte rögtön visszatölti azt a screent, amivel utoljára használtad.

Milyen előnyei és hátrányai vannak a platformnak? Akár fejlesztői, akár UI oldalról.

Ez egy nehéz kérdés. Először fejlesztek ide, így inkább abban látom a lényegi problémát, hogy nehéz meghatározni, mi lenne a megfelelő funkcionalitás a csuklódon. Biztos ismered a Tindert, nekik is van Watch appjuk, viszont valamilyen érthetetlen ötlettől vezérelve, nem a jobbra/balra húzogatást valósították meg az órán, hanem a csevegést, és mint tudjuk, az óra pont az inputban nem túl erős. Szerintem az appjuk másik része sokkal jobb lett volna az órán.

Felhasználói szemmel nekem nagyon tetszik. Elég sok ideje nem éreztem már azt, hogy "egy igazi Apple terméket használok", de itt az óránál visszatért ez a feeling. Tetszenek az animációk, az átgondolt GUI, és a szépen kivitelezett gyári appok. Nem mondom azt, hogy mindenkinek szüksége van rá, de egy igen barátságos játékszer a kezeden. Így pár hét után mar kialakult bennem, hogy mikor mire használom a gyári appokon és lehetőségeken kívül is, néhány ötlet:

Twitter: a feed olvasása, ez egész jól megvalósított app, egyedül az zavar, hogy indulás után visszakapom az előző feedet, és a force touch menüjében nincs refresh - így csak egy back megnyomása, és a timeline-ra tapizás után frissül a lista -, viszont egyszer sem írtam meg az órával tweetet

Clear: bevásárlólista, mert az órás felületben egy-egy checkboxot tesz minden todo elem elé a listán, így ez a funkcionalitás magától értetődő volt

EasyWOl: A csuklómra tapolva tudom WOL segítségével bekapcsolni a mediacenterem! Ez valami fenomenalis.

Bkk: amit készítek éppen

Egyelőre kevés olyan watch app van, amire tényleg szükségem van, de úgy gondolom, hogy később ez meg fog változni. Például egy XBMC távirányító teljesebbe tehetne a képet.

Czo megkért, hogy tegyek ki egy szavazást az app nevéről. Ha a listában nincs szimpatikus, kommentben várjuk az ötletet.