Új sorozatunkban Gruber Kristóf iOS-fejlesztő mondja el az Apple-szolgáltatásokról a tutit. Rántja le róluk a leplet. Bétateszteli őket. Havi rendszerességgel kiválaszt egy témát, amivel kapcsolatban mindenki csak zavartan vakarja a fejét és elmagyarázza, hogyan működik, mire jó, mire nem jó. Második témája a Handoff, ami vajon mi, és mire számíthatunk vele kapcsolatban?

Az ősszel megjelent OS X Yosemite legfőbb újítása a Continutity, vagyis egy csokor olyan technológia, amik az iOS és az OS X jobb összjátékát teszik lehetővé. Ezek közé tartozik a telefonhívások és SMS-ek továbbítása a számítógépre, az Instant Hotspot, ami konfiguráció nélkül engedi használni telefonunk internetkapcsolatát, valamint a végre a két platform közt is működő AirDrop, amivel fájlokat küldhetünk át.

Csaba annak idején készített is egy videót, amiben összefoglalta a lényeget:

 

A mai cikkben azonban az utolsó funkcióra, a Handoffra koncentrálunk, mert mind közül ez a legizgalmasabb.

Mire jó a Handoff?

A Handoff célja, hogy munkafolyamatainkat egyik eszközről a másikra át tudjuk vinni menet közben. Például Macen kinézzük a térképen az útvonalat, majd a térkép aktuális állapotát egyszerűen átkérjük az iPhone-unkra, rábízva magunkat a zsebünkben lapuló telefonunk navigációjára. Vagy a metrón megkezdett cikk olvasását munkahelyünkre megérkezve erőfeszítések nélkül folytathatjuk a nagy kijelzőn. Vagy otthon a kanapén az iPadünkön.

Hogy kell használni?

Na, ezzel kapcsolatban elég vegyes érzelmeim vannak. Egyrészt ugye elméletben marha egyszerű minden: egyik eszközünkön elindítjuk a Handoffot támogató alkalmazást, majd a másik közelébe (2-10 m) érve azon meg fog jelenni egy ikon. Ha ezt megnyomjuk, elindul a program a másik eszközön, majd betölti azt a dokumentumot, amit a kezdeményező kütyün néztünk korábban.

Boom.

A valóság ezzel szemben az, hogy egy csomó tényezőnek együtt kell állnia ahhoz, hogy minden működjön, de a dolog misztikus és kibogozhatatlan jellege miatt talán akkor jársz a legjobban, ha a technikai paraméterek tisztása mellett minden teliholdnál feláldozol egy kakast Steve Jobs szellemének. 

unknown.jpeg

ht6337_04-yosemite-handoff_icon-en.png

De térjünk vissza a technikai háttérre: fontos tudni, hogy nem minden eszköz támogatott, és erre a grafikus felületen tulajdonképpen semmi sem hívja fel a figyelmet (de itt találsz egy kis segítséget). 2012-es vagy újabb Mac, iPhone 5, iPad mini vagy iPad 4 kell hozzá minimum. Erre azért van szükség, mert a Handoff Bluetooth Low Energy-t használ a közelben lévő eszközök megtalálására, ami pedig csak a fentiekben van. Próbálkoztak régebbi gépekkel is, úgy, hogy külső Bluetooth modulokat aggattak rájuk, de a szoftver módosítása nélkül sajnos nem működött a varázslat.

A második kritérium, aminek teljesülnie kell: az összes eszközre ugyanazzal az Apple accounttal kell bejelentkeznünk. Miért van erre szükség? Ez pont nem egy idegesítő körülményeskedés: ugye te sem szeretnéd, ha egy kávézóban a szomszédos asztalnál ülő fickó weboldalai jelennének meg a te monitorod sarkában? (Na jó, de ő biztos nem szeretné.)

Végül pedig, ahogy már utaltam rá, egymás közelében kell lenniük az eszközöknek. Elméletben nincs szükség semmiféle hálózatra, tehát kikapcsolt WiFi-vel, vagy repülő mód mellett is működik minden, és a tesztjeim során ezt sikerült is igazolni, de azért tegyük hozzá, hogy internet nélkül nincs sok értelme a funkciónak.

Persze az sem árt, ha a Handoff és a Bluetooth be van mindenhol kapcsolva, igaz, alapállapotban bekapcsolja nekünk az Apple: iOS-en a Beállítások → Általános → Handoff és javasolt alkalmazások → Handoffot kell bekapcsolni, OS X-en pedig szintén a Rendszerbeállítások → Általános paneljén kell a keresni a Handoff engedélyezése menüpontot. 

Lássuk, miként működik a gyakorlatban: amikor a Handoff-kompatibilis alkalmazás olyan képernyőn van, amit át lehet vinni a másik eszközre, akkor vadul elkezdi küldözgetni az ezzel kapcsolatos információt a világba, és ha ott van a közelben egy minden fenti feltételnek megfelelő másik eszköz, akkor az befogja a jelet és megjeleníti a megfelelő ikont a kijelzőjén. 

iOS-en a lockscreen bal alsó sarkába kerül ki a program, illetve a dupla home gombra előugró multitasking nézet mínusz egyedik lapja is ez lesz, így nem szükséges a folyamat átvételéhez a lockscreent előhoznunk. OS X-en szintén kétféleképpen jelenik meg a kapcsolt eszközökön futó appok listája: a Dock mellett egy bal oldali mellék-dokkban (a sarokban a küldő eszköz sematikus rajzával), illetve a ⌘-Tabos alkalmazás váltóban is beékelődik a -1. helyre.

handoff_multitasking.png

Amikor aktiváljuk a Handoffot, akkor az operációs rendszer elindítja a vezérlőprogramot, majd átadja neki a Bluetooth-on érkezett adatcsomagot, ami nagyjából annyit tartalmaz, hogy mit kell megjeleníteni. A Numbers például megkapja a dokumentum azonosítóját (ezt elkezdi letölteni az iCloudról, ha még nincs letöltve), valamint hogy hová kell görgetni. A Safari a megjelenítendő URL-t küldi át, stb.

Handoff alkalmazások

Az Apple a rendszer majdnem minden programját felkészítette a Handoff kezelésére:

- Mail
- Jegyzetek
- Üzenetek
- Naptár
- Safari
- Emlékeztetők
- Kapcsolatok
- Térkép
- iWork (Pages, Numbers, Keynote)

Kétségkívül a Safari a leghasznosabb, de azért a többi funkció is jól jöhet néha. Mindössze két program nem kapta meg a támogatást: az iTunes/Zene és a Facetime/Telefon. Pedig az sem lett volna rossz, ha a telefonhívásokat nem csak a számítógépről tudjuk átadni telefonra, hanem visszafelé is működne a dolog, de ennek nyilván volt valami technikai akadálya. Az iTunes meg nem mai gyerek, gondolom a programkód volt túl elavult ahhoz, hogy a Handoffhoz hasonló modern dolgokat csak úgy belerakjanak.

Az viszont remek hír, hogy az Apple a fejlesztők számára is lehetővé tette a Handoff használatát. Csak pár sor programkódot kell beépíteniük az alkalmazásaikba, minden mást a rendszer intéz. A dolog úgy van kitalálva, hogy csak akkor működik, ha a fejlesztőnek van Mac-re és iOS-re is appja a Store-ban, mert ezek aláírását veszi figyelembe a Handoff. Az tehát nem működik, hogy az egyik fejlesztő Mac-es appja a másik fejlesztő iOS appjába irányítja a felhasználót.

Van azonban egy kiskapu: Handoffot weboldalak is támogathatnak. Így tehát az lehetséges, hogy mondjuk a gmail.com-ot Mac-en böngészve az iPad-ünkön megjelenik a Gmail ikon, és felhúzva a lockscreen sarkát a Gmail app nyílik meg a megfelelő helyen. (Nem mintha a Google megcsinálta volna, de megtehetné.) Ugyanígy működik visszafelé is: egy iOS alkalmazás megnyithat egy weboldalt a Macen. Webalkalmazások előnyben.

Technoblabla

Technikailag a Handoffért a sharingd process felelős. A hirdetés, a futó alkalmazással kapcsolatos információ szórása maga egy kis JSON (rövid, olvasható, XML-szerű adatformátum), amit a szerver megkap, mikor a program kéri, majd a hirdetés leállításáig szór. Ugyanez a process fogadja a beérkező kéréseket is. Az ismert eszközök kéréseire azonnal reagál a megfelelő ikon kirakásával, az újakkal pedig először leegyezteti a megfelelő kulcsokat. A kulcsok az iCloud bejelentkezések közt resetelődnek, ezért is van az, hogy egyrészt az újra bejelentkezés általában megoldja, ha nem látják egymást az eszközök, másrészt a bejelentkezés után az első ikon megjelenéséig akár fél perc is eltelhet, mert a kulcsok generálása, lekérése, hitelesítése és cseréje sajnos nem mindig gyors.

handoff_lock_screen.png

A Handoff tecnhológia amúgy bármely két eszköz közt működik, így akár Mac-Mac vagy iPhone-iPhone közt is, nem csak a platformok közt keresztben. Egy hirdetést akárhány másik eszköz láthat, így pl. a Macünkben nyitott weboldalt az iPhone és az iPad is mutatni fogja. A másik irányban viszont lusták voltak, az iOS és az OS X is csak egy hirdetést jelenít meg egyszerre, annak ellenére, hogy tervezéskor biztos vagyok benne, hogy több eszköz megjelenítésével is számoltak. Tehát ha iPhone-on és iPad-en is megnyitunk egy weboldalt, akkor senki sem tudja megmondani előre, hogy melyiket fogjuk látni a kettő közül egy Mac-en, de mindenképp csak az egyiket. (A két iOS eszköz persze a másikon megnyitott oldalt mutatni fogja.)

A legtöbb program úgy van leimplementálva, hogy a hirdetés addig érvényes, amíg a program ablaka aktív. A képernyőzár, vagy másik programra váltás tehát azonnal leállítja a Handoff szórását.

Az Apple Watch programozói dokumentációját nézegetve egyébként az az érzésem támadt, hogy a Handoff igazából az óra támogatásához született meg, iOS-re és OS X-re pedig csak azért került át, mert az ehhez szükséges rendszerek nagy része amúgy is meg lett írva. Az óra Glance-ei és értesítései a Handoff protokollt használják a telefonnal való kommunikációra.

Problémák

A jelenlegi (10.10.1 és 10.10.2 béta) OS X-ek nem különösebben tolerálják a több felhasználó egyidejű használatát, így időnként problémánk akadhat a Handoffal. Amikor úgy gondoljuk, hogy minden feltételnek megfelelünk (és a kakas is megvolt), akkor jelentkezzünk ki, majd újra be iCloudba minden érintett eszközön, szépen lassan, egyenként, ez valószínűleg meg fogja oldani a problémát.

Megjegyzés

Az egész Handoff dolog nem keverendő a "Handover"-rel, ami telefonhálózatokban a különböző eszközök közt átadott hívás átadásának folyamatát jelenti. A telefonról számítógépre átjuttatott hívás tehát "handover" (a Continuity keretein belül is), de az egy teljesen más technológia, mint amiről itt beszéltünk.

Gruber Kristóf a Twitteren