Za tajemstvím notifikací v iOS5 a vývoje architektury mobilních operačních systémů

Je chvíle, tak se podívejme na to, jak Apple řeší šlamastiku s absentujícím dashboardem a co je nového v notifikacích na iOS5.
Především, androidisti si zvykli mi podsouvat v komentářích, že jim cpu Apple jako jediné řešení. Nikoliv. Každý prosím, nechť si používá, čeho jest mu libo. Máme tu pět velkých mobilních operačních systémů (iOS, Android, WP/WM, RIM a Symbian), hromadu malých, takže snad si vybere každý. Já se jen snažím vysvětlit, proč zmíněná řešení použil Apple a co v nich vidím za positiva. To, že Apple nepovoluje všechno, co technologie umožňuje, je logická daň za požadavek, který na platformu má, co se výdrže a odezvy zařízení týká. A zdá se, že řada lidí to oceňuje, logicky ale ne všichni. Ti mohou sáhnout po jiném zařízení. Vysvětlit něco se znalostí pozadí není totéž, jako něco bezhlavě propagovat. Pokud to nechápte, jděte prosím sem, tu vám bude dobře.

notifications-center-240788.pngKe stejnému kroku sahá řada dalších výrobců. Stojí za to si povšimnout, že ačkoliv velká část mobilních telefonů je vybavena přisvětlovací diodou u fotoaparátu, jen velmi málo telefonů umožňuje tuto diodu rozsvítit trvale a používat ji jako baterku. Ačkoliv by to uživatelé pravděpodobně někdy ocenili a technicky je to triviální věc. Důvod? Ona taková Cree ledka sosá akumulátor dost slušně. Ale to si necháme zase někdy na jindy včetně zkazek, že se vám zdá, že Android/iOS/Symbian telefon vašeho kolegy vydrží zrhuba stejně, jako váš iOS/Symbian/Android.

Notifikace iOS versus Android

Řekl jsem, že notifikace iOS jsou diametrálně jinak udělané, než u Androidu. Opět to není vidět na první pohled. V čem? iOS narozdíl od Androidu má za sebou backend servery, které zprostředkovávají notifikace z internetu. V Androidu může notifikaci poslat jen běžící lokální aplikace, nebo to musí vývojář řešit po svém (a od verze 2.2 pro úplnost dodám, je tu C2DM). Na iOS je to naopak uděláno proto, aby si aplikace mohla registrovat požadavek (naslouchání na novou IM zprávu třeba), uklidila se z paměti a až přijde notifikace, aby se mohla obnovit do původního stavu s notifikací, což dělá dojem, že aplikace multitaskuje.

A to je také důvod, proč se Apple s notifikacemi nějakou dobu potýkal. Už za současného stavu, kdy jsou v iOS4 notifikace často na prd, neboť se „ztrácí“ (neexistovala historie), se jich poslalo 100 miliard. Bylo třeba naškálovat servery a serverové řešení, protože se smysluplnnou historií notifikací se dá čekat, že provoz exploduje. To, že je notifikace umístěna v horním řádku jako na Androidu, je logické – Apple zde umisťuje notifikační zprávy jako ikonky zmeškaných hovorů již od počátku, ještě v době, kdy Android neexistoval. Hovořit v tomhle případě o opisování je dobrý příklad fanatismu – notifikace v horním řádku mají mobilní telefony již od pradávna, měl ji už můj první Benefon v NMT síti.

Notifikace versus Dashboard

Technický rozdíl mezi notifikací a dashboardem? Z hlediska spotřeby vcelku podstatný. Notifikace zprávu přijímá, dashboard se dotazuje. Dotazovat se, znamená cyklicky, tedy s větší spotřebou. Přijmout zprávu znamená, dostat jen informaci o změně. Zase, jde o procenta baterie a to není málo.

Když jsem tedy mluvil o tom, že Apple pojme dashboard po svém, stalo se. Jen formou notifikací – jsou trvale přítomné na locknuté iOS5 obrazovce a umožňují i příjem zpráv z internetu formou push notifikací, tlačených, nikoliv vyžádaných zpráv. Což otevírá zajímavé možnosti bez nutnosti mít paměť zaplněnou běžícími programy.

lock-screen-notifications-240408.png
Tím také neříkám, že tenhle přístup Apple v iOS se musí dlouhodobě osvědčit, zatím ale vypadá jako progresivní. Rozhodnout se pro něj nemusíte, můžete si vybrat svobodně jiný systém a hlasovat nohama. Není ale bez zajímavosti, že podobné notifikace používá i BlackBerry a nakonec od Android 2.2 via Cloud to Device Messaging i Google.

Mobilní operační systémy

Pokud bych měl shrnout své osobní dojmy, Apple se nechal z velké části zdržet svým cloudovým řešením, které má dále posunout jeho prodej digitální hudby – serverová řešení mu nejdou tak dobře, jako Google. Tento backend handicap nyní snad srovnal a může dále škálovat funkce, která na cloudu závisí. A je třeba si všimnout, že jak Android, tak iOS, jsou na cloudu stále více závislí, mnohem více, než RIM Blackberry a citelně více, než Windows Phone. I u WP ovšem vývoj zřetelně jde tímto směrem.

Je stupidní, dohadovat se, kdo od koho opisuje. Za prvé je inspirace a vylepšování jiných řešení hnacím motorem vývoje, za druhé základní směr byl udán a zatím se nepodařilo najít jiný směr vývoje mobilních operačních systémů, než ten, který právě probíhá. Tedy, pokud se nechcete vrátit k vizi Windows CE a snaze transformovat Windows XP na mobilní telefony. Tímhle směrem kráčí Google i Apple a i ostatní. Apple vsadil na „řízenou kvalitu“, tedy na to, že upřednostňuje přívětivost, odezvu a výdrž před otevřeností, Google naopak vsadil na otevřenost. Obě firmy v poslední době slevují ze svých pozic, protože vidí, že trh to umožňuje či vyžaduje. Google zavádí omezení, Apple otevírá více možností. Proč, to je zase jiné téma.

A proč vám Steve Jobs nedopřeje alternativní dashboard pro iOS?

To je dobrá otázka, která padla v komentářích k mé minulé mikrostati věnované dashboardu, takové té „úvodní obrazovce“, kam se na vás valí všechny záležitosti, které musíte vyřídit, abyste žili se svým zařízením v míru. Proč vám Apple nedopřeje možnost instalovat dashboard jako alternativu? Proč nám vnucuje jedinou cestu?

Today obrazovka - dashboard pro Cydia. Oficiálně jej ovšem nenainstalujete.

Za prvé je vhodné poznamenat, že několik dashboardů či alternativních launcherů existuje, ale jen pro jailbreaknuté iPhony, protože se instalují přes Cydii. Takže to není omezení v návrhu systému, ale omezení v politice systému.Pokud už jste si nějaký neofiko dashboard instalovali, víte patrně odpověď.

Důvodem je výdrž baterie. iOS je, co se výdrže baterie týká, velmi obsesivní zařízení. Původní zákaz multitaskingu neplynul z toho, že by operační systém nebo procesor neutáhli multitask, ale z toho, že nebyly mechanismy, jak kontrolovat, kolik která aplikace žere baterky.

Řešením, s nímž se multitasking „povolil“, bylo jednoduché. Systém telefonu bude mít své vnitřní API, jemuž každý program předá úlohy, které se mají vykonávat na pozadí. A těchto úloh je předem definovaná sada (tuším šest nebo sedm), například čtení polohy a zavolání programu v závislosti na ní (víme, že čtení polohy u iOS nemusí nutně znamenat zapnutí GPS, záleží na požadované přesnosti). Nebo třeba poslouchání z internetu na portu a zavolání aplikace, pokud něco přijde.

Je možná zřejmé, o co je takový přístup lepší: věci, které vyžadují značné zdroje baterie, jsou centralizovány a řízeny operačním systémem. Je jedna centrála, která se stará o to, zda a jaké porty a adresy z netu se poslouchají či pingají a to v intervalech, které systém uváží za optimální. Kdyby se o to starala každá aplikace zvláště, při takových pěti spuštěných aplikacích by telefon byl trvale na datovém provozu a baterka by šla do kopru za několik hodin. Například WP7 tento systém více či méně převzal také, naopak Symbian ani Android jej nemají a na výdrži baterie se to projevuje brutálně.

Běžná iOS aplikace se tedy spustí a když ji chcete „mutlitasknout“, předá do API požadavky, kdy se má znovu zavolat (například u IM programu se má znovu zavolat, až přijde zpráva na port) a uklidí se z paměti. A protože visí v API, iOS vám ji mazaně ukazuje, jako žijící aplikaci, ačkoliv se celý IM program uklidil a neběží, kromě toho, že je registrovaný do chráněných procesů systému. Elegantní věc, které si vývojář většinou ani nevšimne. Až nastane událost, přijde vám na kecálek zpráva, API se mrkne, pro jaký program ta zpráva je (to mu řekla aplikace při uklízení), ten zavolá s patřičnými parametry a IM aplikace se obnoví i s oknem, že vám přišla zpráva. A vy si pořád myslíte, že se někde něco multitaskuje. Kulový kulový. Skutečný multitasking je v iOS vyhrazen jen některým aplikacím.

No a co to má společného s dashboardem? Aby dashboard fungoval, musel by viset na pozadí v multitasku a aktualizovat události na základní obrazovce podle toho, co se právě stalo. Čímž by systém předal vládu nad zdroji neznámé aplikaci, kterou může kdokoliv zbastlit podle svého. A nejde o grafický vzhled, jde o zdroje. Blbě naprogramovaný dashboard, který se bude příliš často aktualizovat, bude náročný jak na baterku, tak na výkon procesoru. A že by dobře naprogramovaný dashboard zkrátil životnost baterky spíše o jednotky procent, než o desítky? To je první věc, kterou se iOS konstruktéři naučili: procenta jsou hodně, únosná jsou až promile. Dejte procento k procentu a baterka je prázdná za půl dne, což je přesně to, co je nežádoucí.

Až budete přemýšlet o nějakém „monopolistickém omezení“, které iOS předkládá, vysvětlení zpravidla bude jednoduché: jde buďto o snížení nároků na odběr enegie, nebo na využití procesoru, nebo na obojí. Prioritou iOS zařízení je co nejvyšší výdrž a konstantní (=rychlá) uživatelská odezva. Že by to Apple mohl nechat na uživatelích, co si instalují? Ale prosím vás, to by dopadl jako Symbian a Android (i ten už se brání), které si uživatelé zaplevelí vším možným softwarem a pak se diví, že jim baterka zdechne ještě před večerem, ačkoliv když ten telefon kupovali, tak vydržela dva dny v kuse…

PS: Už minule jsem naznačoval, že v iOS 5 ze šlamastiky „není povolen dashboard“ Apple solidně vybruslil Centrálou Notifikací. A hned se ozvaly hlasy, že tím zkopíroval notifikace od Androidu, protože je posadil do horního řádku. No, je to komentář založený na tom, že to vypadá podobně. Ale pod kapotou je to diametrálně jiná technologie, která umožní ledasco. To, že letadlo a rogalo vypadá podobně, ještě neznamená, že to poskytne stejnou službu a pro notifikace prostě jiné logické místo není, než horní stavový řádek, který už od iOS pravěku se pro oznámení používá…. Ale o tom snad někdy příště.

Proč nemá iPhone dashboard

Víte, proč nemá iPhone / iPad – tedy iOS platforma, dashboard, tedy takovou tu úvodní obrazovku, na které se sumarizuje, kdo vám právě volal, odkud vám přišel jaký email a kolik máte záznamů v kalendáři?

Je to poměrně zajímavý příběh. Všiml jsem si, že v recenzích to většinou recenzenti zmiňují jako zásadní zápor iOS platformy. Nemá dashboard, tím pádem se nehodí pro profesionální použití, je jen na šmrdlání prstíkem. Recenzent většinou před tím používal Palm nebo WinCE, kde dashboard je či může být a nyní mu chybí.

Dashboard pro Windows

iPhone byl od počátku zaměřen na uživatele, kteří doposud chytrý mobilní telefon neměli, protože pro ně byl příliš komplikovaný a na běžnou práci neužitečný. A jedním z průlomů výzkumu UI pro iPhone (tehdy ještě jen iPhone) byla skutečnost, že dashboard není zpravidla běžným lidem užitečný. Proč? Protože představuje shluk na hromadu naházených události bez nějakého smysluplnějšího třídění. A také stres. Kdykoliv se uživatel podívá na displej, vidí hromadu nevyřízených úkolů, nepřečtených emailů a kalendářových položek. Frustrace.

Průzkum Apple ukázal, že běžný uživatel je schopen úvahy „chci vidět, co potřebuju dnes udělat, tak si vlezu do kalendáře. A když chci vidět emaily, vlezu si do emailů.“ Spolu s notifikacemi, které vám dají vědět, že za chvíli máte vyrazit na schůzku, Apple ponechal třídění událostí na uživateli. A na tom, že ví, že na poznámky používá Evernote a je ochoten do něj vlézt a nepotřebuje vidět poslední poznámky na titulní obrazovce.

Je to mentální posun od dobrovolné sebebuzerace k managementu doprovázenému zabránění průšvihů připomínkami a avizacemi. U lidí se chytil.

Windows Phone 7 jde vědomě jinou cestou a když se na to podíváte podrobně, uvědomíte si, o co je přístup iOS moudřejší. WP7 vám může do dlaždice naservírovat jen kousek té informace, jen maličkou citaci. Z Facebook statutu jen pár slov, nezvládne tam nacpat celý. A v těch pár slovech ani nerozlišíte, jestli by vás zbytek zajímal. Míchající se zmatek.

wp7.png

Na obrázku je vidět, jak takové zmatky mohou vypadat – na pravo původní rozhraní WP7, nalevo se uživatel rozhodl, že si toho dá na titulní stránku systému ještě o něco více. Jistě mu to pomohlo …

Dělal jsem nějakou dobu nad Motoblurem od Motoroly. Doporučení znělo, vyhodit. Rychle se míhající útržky informací, které bylo těžké konfigurovat a bylo ještě těžší vymyslet smysluplnou konfiguraci. Například právě u FB statutů. Zatímco FB sám se snaží vymyslet, jaké statuty by vás zajímaly a třídit je (u průměrných 600 přátel to jinak nejde), Motoblur vám cpe jeden za druhý, protože to jinak z API nedostane a sám s tím nic nedělá. Výsledek? Uživatel je zahlcen šumem a nakonec na využívání Motobluru rezignuje. Naštěstí to samé v podstatě udělala Motorola, protože totéž naznala.

2864-4aaa558d1b1a8.jpg

Motoblur od Motoroly je centralizovaný chaos. Pokud někdo píše párslovní vzkazy, ze to v pořádku a na reklamních fotkách to vypadá hezky. V praxi to ale uživatelé k překvapení vývojářů nepoužívají. Proč? Protože je to chaos…

Dneska bude Apple představovat pátou verzi iOS, ve které učiní dosavadní doktríně „žádný dashboard na iOS zařízení“ citelný ústupek. Má proč. Postupně se iOS zařízení dostávají do rukou i těm, pro které nebyla určena: datovým profíkům, sebezničujícím time-managerům a technikům, kteří si chtějí všechno do detailu nastavit po svém. Do jisté míry to půjde, protože lidé a jejich potřeby jsou různí, peníze jen jedny.

Ale pro ty staré uživatele zůstává ono původní: nenechte se buzerovat. Mějte jen, kam odložit své myšlenky a data, která může nést pomocník za vás a ukáže vám je, až vy budete potřebovat. Je to zajímavý rozdíl, asi jako mezi tlačit a vézt se. Obojí jede, ale jen u jednoho udáváte směr.