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ó. Hatodik témája a Location Services és az Apple szoftverek helymeghatározási képessége.
Location Services
Az iOS a kezdetektől el tudta magát helyezni a térben. A helymeghatározás az iPhone – és az egész okostelefon piac – egyik legfontosabb képessége, amire rengeteg program épít. Ehhez mérten a programozóknak elég sok eszközt kínál az Apple ennek kihasználására. Ezekről szeretnék adni egy kis áttekintést, anélkül, hogy a technikai részletekben elmerülnénk.
Testvérek
Az iPhone OS (ma iOS) a legelső verziótól rendelkezett a CoreLocationnel, ami a helyzet megállapításáért felelős framework. (Persze a programozók ezt is csak az App Store bejelentése után vehették igénybe.) Azt viszont már kevesebben tudják, hogy a CoreLocation idővel megjelent OS X-en is (egészen pontosan 10.8-ban), így Mac-ünk sok esetben hasonló képességekkel rendelkezik, mint egy iPhone.
Hardver
Ez az egyik legérdekesebb dolog: ahhoz, hogy készülékünk meghatározza a helyzetünket, nem feltétlenül van szüksége a GPS-re. A legpontatlanabb helymeghatározási mód magát a GSM (mobiltelefon) hálózatot használja arra, hogy az adótornyok ismert helyzetét és vételi jelerejét felhasználva megbecsülje a felhasználó helyzetét. Könnyű erre azt mondani, hogy ez nagyon pontatlan, de nem árt ha belegondolunk, hogy tisztában lenni azzal, hogy a „Győr közelében vagy” egy egészen pontos információ ahhoz képest, hogy azt sem tudjuk, hogy melyik földrészen csavarogsz. A dolog nagy előnye, hogy nem szükséges hozzá semmi extra: a telefon mindenképpen monitorozza az adótornyok jelszintjét, hiszen ez a telefonáláshoz szükséges.
A második szint a WiFi (WPS – WiFi Positioning System). Ez a megoldás már akár néhány méteres pontosságot is adhat, hasonló módszerekkel: a telefon figyeli a közelben lévő WiFi eszközöket, és egy adatbázis alapján tudja, hogy melyik hol helyezkedik el. A vételi jelszintből háromszögeléssel megállapítható a készülék pozíciója. Honnan tudja a rendszer, hogy melyik WiFi hol van? Egyszerű: a Google Maps például jelenti ezeket az információkat az aktuális GPS hardverből szerzett koordinátákkal együtt.
A legelső iPhone még nem rendelkezett GPS vevővel, így Steve Jobs demójában kizárólag a WiFi háromszögelés pontosságát láthattátok.
A harmadik szint természetesen maga a GPS vevő. Erről pár szót: A GPS rendszer minimum 24, jelenleg kicsit túlméretezve éppen 31, a Föld körül 20.000 km magasságban keringő műhold segítségével működik. Leegyszerűsítve ezek a műholdak ismert helyen tartózkodnak és folyamatosan közvetítik a pontos időt. A GPS vevők nem sugároznak semmilyen jelet, mindössze a műholdak adását képesek fogni. A műholdak helyéből, a sugárzott időből és a vevő pontos idejéből kiszámítható a vevő koordinátája. A GPS-vevőről még azt érdemes tudni, hogy viszonylag sokat fogyaszt, tehát a telefonok minden áron próbálják elkerülni, hogy be kelljen kapcsolniuk.
Érdekesség, hogy az amerikaiak GPS rendszere mellett az orosz GLONASS rendszer műholdjainak jeleit is veszi minden iPhone 4S-nél újabb telefon. Ez a rossz vételi viszonyok közt tud egy kicsit segíteni a helymeghatározásban, más előnye nem nagyon van.
Alapjárat
A CoreLocation legegyszerűbb szolgáltatása úgy működik, hogy a program megmondja, milyen pontosságú pozíció érdekli (egy navigációs szoftvert például a méteres pontosság elengedhetetlen, egy időjárási alkalmazásnak azonban egy város szintű elég lehet), mekkora változás esetén akar értesülni annak bekövetkeztéről, majd elindítja a figyelést. Ekkor az iOS bekapcsolja a megfelelő hardvereket, kirakja a teli lokáció jelző nyilat a státusz sávba és ha talált egy megfelelő pontosságú pozíciót, akkor értesíti az appot, ami ezt feldolgozhatja. Innentől a program dönt, hogy ezzel megelégszik, és lekapcsolja a szolgáltatást (ekkora pár másodperc késleltetéssel eltűnik az ikon), vagy folyamatosan követni szeretné a felhasználót.
_A beállításokban (adatvédelem → helymeghatározás) mindig nyomon követhető, hogy mely alkalmazások használták legutóbb a helymeghatározást. Ezek neve mellett lila színnel jelenik meg a nyíl ikon._
Ez a szolgáltatás minden további nélkül elérhető OS X-en is. Ki is tudod próbálni, ha a Safariban megnyitod a Google Maps-et, vagy elindítod a Térképek appot.
Háttérmunkák
Amikor iOS-en háttérbe raksz egy appot, az záros határidőn belül fel fogja függeszteni a futását, hogy ne merítse le a telefont. Lehetséges azonban pár előre meghatározott módon megkérni a rendszert, hogy az app futhasson háttérbe küldés után is. Az egyik ilyen mód pontosan ilyen feladatokhoz készült: ha a program jelezte, hogy élni kíván vele, akkor továbbra is futni fog. Ilyenkor a rendszer a státusz sort kékre váltja, és kiírja, melyik program használja a háttérben a pozíciódat.
iOS 8-tól kétféle engedélyt adhatsz az appoknak a lokációs szolgáltatások eléréséhez: „Mindig” és „Az alkalmazás használata közben”. A régebbi programok automatikusan a „Mindig” jogot kapták meg.
Még egy fontos dolog: néhány helymeghatározó szolgáltatás csak addig működik a háttérben, amíg az appod fut (tehát nem pöckölöd ki a multitasking váltóban, vagy nem öli le a rendszer, amikor valami másnak kell a memória, illetve nem volt reboot), néhány program viszont ilyen események után is újra lesz indítva. Alapesetben azonban nem indítja vissza az appot a rendszer.
Fontoskodás
iOS 4-től az Apple bevezetett egy új módszert arra az esetre, amikor csak a nagyobb ugrások érdeklik a programot, a kisebb mozgások nem. Az ilyen „significant location change” eseményekre feliratkozó programokon sokat tud spórolni a telefon. Ezek a nagyobb ugrások a dokumentáció alapján legalább 500 m-esek. Az ezt a módszert használó programokat a rendszer felébreszti akkor is, ha nem futnak.
Régiók
Az Apple-nél azonban nem elégedtek meg ennyivel és arra jutottak, hogy van egy csomó program, ami még így is kap egy rakás olyan eseményt, amire igazából nem kíváncsi, például a teendő lista alkalmazás, amit kizárólag az érdekel, hogy a bolt közelében vagy, nem kell, hogy fusson, ha még csak a városban sem tartózkodsz.
Erre a problémára volt a válasz az iOS 5-ben bevezetett régió monitorozás. A programok beregisztrálhatnak egyenként maximum 20 területet, ami érdekli őket, és értesítést kapnak az iOS-től, ha a készülék ezen régiók valamelyikén belülre kerül, vagy elhagyja azt. Amikor egy program erre a módra regisztrál be, egy körvonalas nyíl ikon jelenik meg a státusz sorban.
Ez a szolgáltatás szintén felébreszti a nem futó appot, így biztosítva, hogy újraindítás után is szóljon a teendőlista alkalmazásunk, hogy vegyünk tejet. OS X-en szintén elérhető(!), bár ott természetesen nincs ilyen lehetőség, vagyis a programnak futnia kell, hogy működjön.
Irányfények
Angol nevükön: beacon-ök, így talán már ismerősebb. Kis, Bluetooth jeladókról van szó, amik közelségét képes érzékelni minden iPhone 4S-nél újabb telefon (iOS 7-től). A programozók beregisztrálhatják azokat a beacon-öket, amikre figyelni akar az app, ezután pedig az iOS értesíti az appot, ha a telefon a közelükbe kerül. A háttérbe rakáskor önállóan nem működőképesek, tehát mindenképpen egy nyíl ikon fog megjelenni a státusz sorban, ugyanis valamelyik háttérben lokációt figyelő mód aktív kell hogy legyen mellette. Ez OS X-en nem elérhető.
Iránytű
Fontos szolgáltatás még, amiről nem ejtettünk szót, az iránytű. Természetesen sokszor nem elég, ha a készülék tudja, hol tartózkodik, az információk helyes megjelenítéséhez arra is szüksége van, hogy milyen irányba fordulunk éppen. Érdemes tudni, hogy kétféle északi irány megkülönböztetésére képes az iOS: a mágneses és a valós északi sark felé is tud mutatni (ugyanis ezek közel sem ugyanott helyezkednek el). A mágnes irányt célhardverrel, a valós északi irányt pedig a GPS rendszert is bevonva kalkulálja ki.
Az iránytű az alap helymeghatározáshoz hasonlóan működik, tehát a háttérben akkor megy, ha a program futhat a háttérben is. Mivel Mac-ekben nincs iránytű vagy GPS, ez csak iOS-en megy.
Gyakori helyek
Ez az egyik legizgalmasabb újdonság, ami iOS 8-ban jelent meg. Ha bekapcsoltuk (Beállítások → Adatvédelem → Helymeghatározás → Rendszerszolgáltatások → Gyakori helyek), akkor az iOS figyeli, hol töltünk el hosszabb időt egyhuzamban. Ha a programok feliratkoznak erre, akkor a rendszer szólni fog, amikor a felhasználó egy ilyen gyakori helyre érkezik, vagy elhagyja azt, illetve lekérhető a regisztráció óta meglátogatott helyek listája is. Ilyenkor ugye a programnak egyáltalán nem kell futnia, mert a rendszer elvégzi a helyek figyelését és rögzítését, a program csak a kész listát kéri el tőle.
A háttérben csak az alap lokációs szolgáltatással együtt működik, OS X-en pedig még nem elérhető.
Trend
Jól látható tehát, hogy az iOS fejlesztő mérnökei mennyi energiát fektetnek abba, hogy minden felhasználási területnek egy agyonoptimalizált, mégis jól használható lokációs szolgáltatási módot adjanak, mert ha ez a sok, komplex hardver rossz kezekbe kerülne, percek alatt leszívná az akkut, úgyhogy jobb, ha mezei programozó palánták inkább nem próbálják meg maguk megírni a megoldást ezekre a feladatokra. A rendszer persze további optimalizációkat tud végezni, ha több program kér együtt valamilyen formában helyinfókat.
2015-ben tehát már nem kell rosszul érezni magunkat, ha egy program a háttérben használja a helymeghatározást, és kint van a státusz soron az ikonja, ez optimális esetben lehet, hogy csak 5-10% akkut szív le egy egész nap során, vagy ha csak régió monitorozásos módszert használ, annyit sem. (Saját tapasztalat alapján 1% alatt.)
gklka
2015.05.03. 12:59
Címkék: gk megfejti
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ó. Hatodik témája nekünk személyes kedvenc: régebben remekül ment a távoli segítségnyújtás két Mac között, de az Apple kinyírta ezt a szolgáltatást. Aztán titokban újra bevezette. GK-tól megtudjuk, hol keressük.
Biztos nem ismeretlen a szituáció, akár egyik, akár másik oldalról: valami nem működik, vagy valamit nem tudsz egyedül megoldani a számítógépen és egy másik ember segítségét kéred. Ez egészen addig jól működik, amíg valaki a környezetedben segíteni tud neked, de mi van akkor, ha nincs? Na, ekkor jön kapóra az OS X egyik kevésbé ismert, beépített szolgáltatása: a Screen Sharing (Képernyőmegosztás).
Történelemóra
Az OS X időtlen idők óta tartalmaz VNC szervert (ahogy azt már korábban írtuk is). Erre tetszőleges VNC klienssel rá lehet csatlakozni, így akár Windowsról vagy iPad-ről is vezérelhető a Mac. A szervert az System Preferences (Rendszerbeállítások) Sharing (Megosztás) paneljén tudjátok aktiválni.
Később próbálták a csatlakozási folyamatot egyszerűsíteni, és megjelent a megosztás egy új formája: az Apple akkori csevegő programjában, a mára Messages-é átlényegült iChat-ben kezdeményezhettünk képernyőmegosztást a kontaktjainkkal. Ez két újdonságot hozott be: egyrészt több-kevesebb sikerrel kiküszöbölte a routerek beállításának szükségszerűségét, másrészt megjelent az adaptív minőség, ami azt jelenti, hogy a kép videóként, tömörítve kerül továbbításra, ezzel gyorsítva az átvitelt. (Ehhez persze szükség volt a megfelelő hardverre, ami a videót képes valós időben betömöríteni.)
Az iChat eltűnésével ez a csatlakozási mód eltűnt, és egészen az OS X Yosemite-ig nem helyettesítette semmi.
Csatlakozási módok
A lehetőségeink mostanra elég sokrétűek. Vegyük őket sorba!
1. Csatlakozhatunk a hagyományos módon, aktiválva a VNC szervert a megosztásban. Helyi hálóról ilyenkor bármely VNC kliens (pl. RealVNC) a gép belső IP-jén (pl. 192.168.0.101) vagy a host nevén (pl. beast.local) elérhető. Más hálózatból úgy tudunk csatlakozni, hogy a routeren a VNC szokásos, 5900-as portját a gépre irányítjuk.
2. Amennyiben az a gép, amiről csatlakozni akarunk, szintén Mac, a Finder oldalsávjában is meg fog jelenni a megosztás. Oda kattintva az OS X beépített VNC kliense (A Screen Sharing.app) nyílik meg.
3. Ha az iCloud-os Back To My Mac (Vissza a Mac gépemhez) aktív, a saját számítógépeink akkor is látszódni fognak a Finderben, ha egyébként más hálózaton tartózkodunk éppen (tehát a router gondot ez áthidalja).
4. A Messages.app Yosemite óta újra képes a képernyő megosztására. Ehhez a beszélgetés jobb felső sarkában a Részletek gombra, majd ott a két téglalap ikonra kell kattintani. Kérhetjük a másik képernyőjének megosztását vagy vagy meghívhatjuk emberünket, hogy nézze a mi képernyőnket.
5. Használhatjuk a Finder Connect to... (Kapcsolódás szerverre...) menüpontját, ahová a vnc://ip formában megadva a célgép elérhetőségét elindul a Screen Sharing.
6. Ugyanez működik Safariból is.
7. A legérdekesebb megoldás viszont szerintem maga a Screen Sharing.app. A program a /System/Library/CoreServices/Applications/ mappában található, de a legegyszerűbb, ha a Spotlight-ba írjuk be a nevét, és úgy indítjuk el.
Tipp: miután elindult, ⌘-klikkeljetek a Dockon az ikonjára (ekkor meg fogja mutatni Finderben), majd onnan az Applications mappába húzva, miközben az ⌥ és ⌘ gombokat nyomjátok egy parancsikont készíthettek rá.
A Screen Sharing.app
Akkor ejtsünk pár szót arról, mi mindent tud ez a program. Azon kívül, hogy egy remek VNC kliens, két Mac közti kommunikáció során egy sor érdekes pluszt ad.
- Csatlakozhatunk vele IP címhez, hosthoz, valamint emberekhez! Elég elkezdeni a címtárban tárolt ismerőseink nevét begépelni, és fel fogja ajánlani őket. Ekkor a másik fél egy értesítést fog látni, amiben elfogadhatja vagy elutasíthatja a kérést. Lehet blokkolni is, ha mondjuk már nagyon unjuk a rendszergazdánk gyenge ismerkedési kísérleteit
- A segítségnyújtást kérő személy egy menü elemet fog látni, amiben megengedheti a segítség nyújtónak, hogy irányítsa a számítógépét
- Ha viszont ezt nem engedi meg, akkor a segítség nyújtó kap egy aranyos kis nagyítót, amivel bárhol a képen kattintva a másik fél képernyője elsötétedik, kivéve a kiválasztott tartományt. Így könnyen lehet mutatni, mikor hová kéne kattintani
- Mindeközben kétirányú hangbeszélgetést hoz létre a program, így halljuk is, hogy mit akar a másik fél magyarázni
- A segítségnyújtás szintén a menüből szüneteltethető, ha mondjuk valami privát dolgot szeretnénk elintézni közben
- A Screen Sharing.app támogatja a fájlok mozgatását is: egyszerűen drag’n’droppal húzhatunk ki- és be a megosztás ablakba fájlokat, mintha csak egy Finder ablak lenne
- Szintén támogatott a közös vágólap: ha valamit az egyik gépen kimásolunk, az a másikon beilleszthető
Ezek után ha legközelebb nem megy valami, akkor pár kattintással – és egy kis távoli segítséggel – meg tudjátok oldani, nem kell odacsődíteni a rendszergazdát/távoli-de-olyan-okos-rokont.
gklka
2015.04.06. 11:57
Címkék: gk megfejti
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ó. Ötödik témája a hamarosan minden platformon elérhető Photos alkalmazás, amit végre tényleg lehet szeretni.
Másfél hónapja beszámoltunk róla, hogy áll az Apple béta verzióban elérhető Photos appja. Akkor szánalmasan leszerepelt, elég sötét jövőt vetített előre a program. A kérdésre, miszerint a Photos lesz-e az Egy Igaz Képkáoszt Megszüntető Megváltó App, akkor magabiztosan nemmel válaszoltunk, azonban sok minden történt azóta, így nem árt újra megvizsgálni ezt a problémakört, főleg, hogy közeleg a 10.10.3 stabil verziója. (Ha tippelnem kéne, az OS X 10.10.3 és az iOS 8.3 egyszerre fognak megjelenni 1-3 héten belül.)
OS X
Az OS X 10.10.3 jelenleg az ötödik fejlesztői beta verziónál tart, amiből, ha jól emlékszem, kettő publikus beta is lett, vagyis bárki, aki jelentkezett a beta programba, letölthette. Az első tesztjeimhez használt verziót rögtön egy olyan követte, amivel gyakorlatilag minden OS X-es panaszom megszűnt: nem eszi a processzort a háttérben, nem lassú, nem fagy. A Photos verzióról verzióra gyorsult, most már azt mondhatom, hogy a legtöbb része 70.000 képpel is villámgyors. (Ami még nem, az pl. az arckezelés, ott még van mit csiszolni.) Külön említésre méltó, hogy a folyamatosan változó adatbázisformátumok közt bétáról bétára gond nélkül migrált a program.
iOS
Az előző cikkben az akkor stabil 8.1-et használtam, amit azóta váltott a 8.2. Ebben semmit sem javult a képkezelés. Nem így az ezt követő 8.3-mal, ami a fejlesztői beták után az iOS történelmében először publikus beta verziót is kapott, ezt bárki, fejlesztői hozzáférés nélkül is kipróbálhatta. A legelső 8.3 beták nem hoztak számottevő javulást, azonban beta 2 és beta 3 környékén szemmel láthatólag ráfeküdtek a témára, mert folyamatosan szűntek meg a problémák. Legújabb tesztjeim szerint, amikhez két iPhone-t és egy iPad-et használtam, gond nélkül letöltődik a 70.000 képes fotókönyvtár egy 64 gigás készülékre (nyilván az optimalizált opciót választva), ámbár a folyamat kb. fél napot igényel és izgalmasan fel-le cikázik menet közben a hátralévő képek számát mutató számláló. Miután minden lejött, remekül működik a szinkron iOS-iOS és iOS-OS X közt, vagyis pl. ha csinálok egy screenshotot az egyik készüléken, akkor a másikon 4-5 másodpercen belül megjelenik.
Sikerült kijavítaniuk az albumok hibáit is, így a kezdetben konstans fagyást okozó albumok tab ma már gond nélkül működik.
iCloud.com
Sajnos az iCloud.com-os Photos app nekem teljesen meghalt, mindössze egy töltésképernyőre futja neki, amivel korlátlan ideig képes gyönyörködtetni pár perc hátralévő időt ígérve, azonban tovább még nem jutott. Reméljük, hogy ez hamarosan helyreáll.
Nem szorosan iCloud.com-os téma, de érdemes megjegyezni, hogy maga a szerverfarm is erősebb lett az utóbbi pár hétben: eddig 3-10 másodpercet kellett várni egy-egy képre, most viszont közel azonnal letöltődnek.
Ami nem változott
16 gigán nem próbáltam azóta az optimalized library-t, de úgy gondolom, hogy az továbbra sem fog elférni, így egy ekkora könyvtárhoz sajnos minimum egy 32 gigás telefon, vagy iPad kell.
Az a probléma is fennáll, bár némileg javult, hogy az alkalmazások ennyi fotóval nem tudnak mit kezdeni, így pl. a Twitter app a fotók megnyitásakor fél percig is tököl. A Facebook Messengert szerencsére kijavították, azzal már nem lesz gondunk.
Továbbra is problémás a könyvtár törlése, vagyis ha kikapcsoljuk a fotókat, akkor rengeteg, több gigányi szemét marad utána az eszközön (ez "Egyéb" alatt jelenik meg a foglaltsági diagrammon). Ezen csak egy resetelés és újratelepítés segít.
Számok
Megvizsgáltam azt is, hogy az egyes eszközökön mekkora helyet foglal a képernyőre optimalizálással ugyanaz a fényképmennyiség. Az asztali gépemen 363 gigabájtot foglalnak a fotók, ebből 267 gigabájt a master folder, a többi 96 gigabájt a thumbnail, a cache és az adatbázis. Ugyanez az iCloudon 259 gigabájtot foglal, ehhez már az 500 gigabájtos csomagot kell igénybe vennem, ami 10 euró havonta. A képek iOS-re optimalizált üzemmódban 21,3 gigabájtot foglalnak az iPhone-on, ebben benne van az összes kép összes thumbnailje, valamint annak a néhány tucatnak a teljes mérete, amit megnéztem a telefonon.
Verdikt
Érezhetően sok energiát fordít az Apple a Fotók alkalmazás fejlesztésére, azt mondanám, hogy majdnem annyit, amennyit annak idején a méltatlanul elhanyagolt iPhotóra kellet volna. Várakozásaimmal ellentétben sok problémát sikerült megoldaniuk, így már jelen formájában is egy egészen használható szinkronizációs megoldást kínálnak. Mind iOS-en, mind pedig OS X-en egészen gyors a képek böngészése, illetve a változások propagálása az eszközök közt. Egyezünk meg abban, hogy a Photos még nem az igazi, de már majdnem ott van.