Feb 6

Puhelimesta televisioon

Example image

Reilu vuosi sitten Apple julkaisi neljännen sukupolven AppleTV:n, ja sen myötä uuden käyttöjärjestelmän, tvOS:n. Vahvasti iOS:iin pohjautuva tvOS toi ensimmäistä kertaa App Storen ja kolmannen osapuolen kehittämät sovellukset AppleTV-maailmaan.

Natiiveja sovelluksia tvOS:lle voi toteuttaa iOS:sta tuttuun tapaan Swiftillä tai Objective-C:llä. Tällöin tvOS-sovelluksen voi vaikkapa lisätä omaksi targetikseen jo olemassa olevaan Xcode-projektiin. Koska tvOS perustuu iOS:iin, jo olemassa olevat iOS-sovellukset saattavat taipua tvOS-sovelluksiksi suhteellisen helposti. Todennäköisesti “konepellin alla” toimiva vanha koodisi toimii ilman suurempia haasteita, mutta käyttöliittymän uudelleensuunnitteluun on syytä varautua.

Perinteisten iOS:sta tuttujen natiivisovellusten rinnalle tvOS tuo myös uuden tavan client-server-sovellusten kehittämiseen: Applen TVML:n (Television Markup Language).

Example image

Kosketuksesta pyyhkäisyyn

iOS:sta tutun kosketukseen perustuvan käyttöliitymän sijasta tvOS:ia ohjataan trackpadia muistuttavalla Siri Remotella. Kaukosäätimen kosketuspintaa pyyhkäisemällä käyttäjä navigoi tv:ssä näkyvältä käyttöliittymäelementiltä toiselle. Uusi käsite käyttöliittymässä on focus joka ilmaisee kulloinkin valittuna olevaa elementtiä. Fokuksessa olevaa elementtiä on tyypillisesti korostettu hieman suurentamalla sitä muihin elementteihin nähden, sekä kevyesti animoimalla sitä vastaamaan käyttäjän kosketuksiin.

Fokuksen hallinnoinnista vastaa Focus Engine. Yksinkertaisissa näkymissä Focus Engine voi hoitaa siirtymisen käyttöliittymän elementtien välillä automaattisesti, mutta toisinaan se tarvitsee hieman apua tietääkseen mikä kohde tulisi seuraavaksi valita. Esimerkiksi View Controller voi kertoa focus enginelle näkymän johon sen pitäisi oletuksena siirtää fokus. Käyttöliittymän elementtien välillä navigointia voi helpottaa Focus Guidejen avulla. Ne voi mieltää näkymättömiksi näkymiksi, jotka ohjaavat fokuksen kulkua näytöllä. Focus Guidet voi sijoittaa haluttuun paikkaan constraintien avulla kuten näkymätkin.

Example image

Focus Engine hoitaa automaattisesti siirtymisen painikkeiden välillä kun ne ovat linjassa keskenään.

Example image

Painikkeiden sijoittelu vaatii Focus Guiden jotta siirtyminen niiden välillä onnistuu.

Puuttuva webview ja muita haasteita

Televisiossa toimivassa sovelluksessa on omat käytettävyyshaasteensa. Tekstin syöttö on hankalaa, joten sen tarve kannattanee minimoida. Käyttäjä voi kirjoittaa selaamalla ruudulla näkyvää kirjainlistaa kaukosäätimen avulla, tai vaihtoehtoisesti vaikkapa iPhonen virtuaalinäppäimistöä käyttäen. Siri Remote tarjoaa myös mikrofonin ja sanelumahdollisuuden, mutta valitettavasti (ainakaan tämän kirjoitushetkellä) ei vielä Suomessa.

Kannattaa myös huomioida televisiolaitteiden erityispiirteet, kuten overscan: tv saattaa rajata kuva-alueen reunoilta pois jopa viitisen prosenttia kuvasta, joten sovelluksen käyttöliittymässä kannattaa jättää reunoille hieman tyhjää tilaa.

tvOS ei sisällä iOS:sta tuttua webView’tä, jossa voisi näyttää web-sisältöä. Jos siis mietit hybridisovelluksesi porttaamista tvOS-maailmaan, tai sovelluksesi muuten vaan nojaa vahvasti web-sisältöön, joudut ehkä miettimään B-suunnitelmaa.

Top Shelf on sovelluksen näyteikkuna

AppleTV-sovellus voi tarjota näkyvää sisältöä jo tvOS:n kotinäkymässä. Top Shelf -näkymä ilmestyy näkyviin kun sovelluksen ikoni sijaitsee kotinäkymän ylärivissä ja se on valittuna. Se on kuin mainospaikka jossa sovellus voi esitellä sisältöään käyttäjälle. Klikkaamalla jotain Top Shelfin kohteista voidaan avata sovellus suoraan haluttuun näkymään. Top Shelf voi sisältää esim. staattisen kuvan, tai dynaamista sisältöä. Dynaaminen sisältö toteutetaan luomalla App Extension. Laajennuksesta tehdään oma target, ja se kommunikoi varsinaisen tvOS-sovelluksen kanssa samaan tapaan kuin esim. Widgetit iOS:ssa (tai ensimmäiset versiot kellosovelluksista watchOS:ssa).

App Store ja betatestaus

AppleTV-sovellukset jaellaan loppukäyttäjille App Storen kautta tuttuun iOS- ja macOS-tyyliin. Jakelu betatestausta varten onnistuu Applen TestFlightin kautta, ja vain sen kautta. Toisin kuin iOS:ssa, esim. HockeyApp:n kautta tvOS-sovelluksia ei ole mahdollista jakaa (joskin esim. HockeyApp:n crash reporting-työkalujen käyttö onnistuu toki).

iOS tvOS ohjelmistokehitys Swift

Tuomas Ekholm