iOS
iOS je mobilní operační systém vytvořený společností Apple
Inc. Původně byl určen pouze pro mobilní telefony iPhone, později se však začal
používat i na dalších mobilních zařízeních této firmy, jako jsou iPod
Touch, iPad a nejnověji Apple TV.
Název
Pojmenování iOS se používá až od
čtvrté verze tohoto systému. Do té doby byl oficiálně nazván iPhone OS. Nový
název iOS je v souladu s politikou pojmenovávání produktů (iPod, iPhone, iPad,
…). Ihned po zveřejnění nového názvu iOS byla na Apple podána žaloba od
společnosti Cisco Systems, která název IOS používá pro označení softwaru na
svých routerech. Aby zabránila žalobě, licencovala si společnost Apple použití
tohoto názvu pro svá zařízení.
Architektura
iOS je odlehčenou verzí
operačního systému Mac OS X, používaného v počítačích společnosti Apple. Jedná
se tedy o systém UNIXového typu. Jelikož je určen pro mobilní zařízení,
neobsahuje veškerou funkcionalitu OS X, na druhou stranu ale přidává podporu
dotykového ovládání. Systém se dělí na čtyři základní vrstvy, které zajišťují
základní funkčnost a poskytují vývojářům API aframeworky potřebné k vývoji
aplikací.
Vrstva Cocoa Touch
Tato vrstva obsahuje nejdůležitější
frameworky při vývoji aplikací. Technologie dostupné v této vrstvě poskytují
infrastrukturu pro implementaci grafického rozhraní aplikace a interakci s
uživatelem a poskytuje vysokoúrovňové systémové služby. Při vývoji aplikací je
vhodné začínat právě s touto vrstvou a nižší používat pouze v případě potřeby.
Vysokoúrovňové služby Cocoa Touch
Multitasking
Až do verze iOS 4.0 nebylo
možné psát aplikace, které by byly schopné běhu na pozadí. Stisk tlačítka Home
vyvolal ukončení aplikace. iOS 4.0 sice nepřinesl možnost plnohodnotného běhu na
pozadí, avšak poskytuje služby, které umožňují provádění některých činností, i
když aplikace neběží na popředí.
Ochrana dat
Aplikace, které ukládají
citlivá data, mohou využívat vestavěné podpory šifrování. Pokud aplikace označí
soubor jako chráněný, systém ho automaticky ukládá na disk v zašifrované podobě.
Dokud je zařízení uzamčené, obsah souboru je nedostupný jak aplikaci, tak
případnému útočníkovi. Poté, co uživatel zařízení odemkne, je vygenerován
dešifrovací klíč, který aplikaci umožní soubor přečíst.
Push notifikace
Od
verze 3.0 umožňuje iOS posílání tzv. push notifikací. Tento mechanismus umožňuje
upozorňovat uživatele na nové informace, aniž by musela být daná aplikace právě
spuštěna. Uživateli je možné zobrazit krátkou textovou informaci, přehrát zvuk
či aktualizovat číselnou značku (badge, odznak) na ikoně aplikace. Iniciovat
odeslání push notifikace musí server výrobce aplikací, který následně komunikuje
se servery společnosti Apple, které se pokusí o doručení na mobilní zařízení
(doručení není garantováno) pomocí jeho unikátního identifikátoru.
Lokální
notifikace
Verze iOS 4 a vyšší doplňují mechanismus push notifikací o tzv.
lokální notifikace. Ty nevyžadují žádné připojení k serveru a údaje o
notifikacích ukládají lokálně. Aplikace aktuálně běžící v pozadí (např.
autonavigace) mohou v případě potřeby upozornit uživatele na důležité události
(např. o blížící se zatáčce) ihned. Dále je také možné naplánovat notifikaci na
určitý datum a čas. Taková notifikace je již uložena v systému a aplikace v
požadovaný čas nemusí běžet, aby se uživateli dané upozornění zobrazilo.
Rozpoznávání gest
V iOS před verzí 3.2 bylo nutné ručně zachytávat a
zpracovávat dotykové události a komplikovaně rozpoznávat gesta. Od verze 3.2
však existuje možnost systémového rozpoznávání definovaných gest a jejich
předávání aplikaci. Možná gesta jsou ťuknutí (možno i vícenásobné), sevření a
rozevření prstů, přetahování objektů, švihnutí (swipe), rotace, dlouhý stisk.
Dále je možné nadefinovat rozpoznávání vlastních gest.
Sdílení souborů
Aplikace může poskytnout přístup ke svým datům pomocí programu iTunes. Pokud to
aplikace umožní, lze přes iTunes nahrávat soubory do definované složky v
aplikaci a soubory z ní naopak kopírovat do počítače. Tato služba neumožňuje
sdílení dokumentů mezi aplikacemi.
Peer to peer
Od verze 3.0 je možné
používat peer-to-peer konektivitu mezi více zařízeními pomocí
technologie Bluetooth. Tato funkcionalita je využívána převážně k tvorbě her pro
více hráčů, ale je možné ji využít i jinak.
Standardní systémové view
controllery
Mnoho frameworků použitých v systému používá standardizované
komponenty. V rámci zachování konzistentního uživatelského zážitku je proto
vhodné používat tyto standardizované komponenty i v aplikacích třetích stran.
Mezi hlavní controller patří Adresář (zobrazení kontaktních informací),
Kalendář, Psaní e-mailu/SMS, Otevření souboru, Výběr obrázku z
knihovny/fotoaparátu apod.
Podpora externích zobrazovacích zařízení
Od
verze 3.2 je možné připojit pomocí speciálního příslušenství externí zobrazovací
zařízení. Takovéto externí zařízení se pak používá jako druhé okno, kam aplikace
zobrazuje obsah. Pokud je třeba používat režim zrcadlení (mirror), je nutné
zobrazovat stejný obsah do dvou oken zároveň.
Frameworky dostupné v Cocoa
Touch
Framework
Použití
Address Book UI Framework
Tento framework
obsahuje standardizované rozhraní pro zobrazování a úpravu kontakních informací.
Event Kit UI Framework
Obsahuje controllery pro práci s událostmi (položky v
kalendáři)
iAd Framework
Umožňuje zobrazení bannerové reklamy v aplikaci.
Game Kit Framework
Poskytuje podporu pro peer to peer komunikaci mezi
zařízeními pomocí protokolu Bonjour.
Map Kit Framework
Umožňuje používat
mapovou komponentu pro zobrazovaní map, případně dalších informací o umístění.
Message UI Framework
Umožňuje vytvářet a odesílat e-maily a SMS zprávy pomocí
standardizovaných uživatelských rozhraní.
Media layer
Tato vrstva umožňuje
vytváření graficky a zvukově propracovaných aplikací. Tyto technologie umožňují
plynulé přehrávání animací, videí a zvuků.
Grafické technologie
Kvalitní
grafika je důležitou součástí systému iOS. Nejjednoduššího a nejefektivnějšího
vytváření aplikací je možné dosáhnout používáním standardních předrenderovaných
obrázků a komponent a nechat systém, aby vše obstaral, nicméně v některých
situacích není toto řešení možné. V takových situacích je možné použít
následující technologie.
Technologie
Popis
Core Graphics (Quartz)
Stará se o kreslení nativních 2D vektorů a renderování obrázků
Core Animation
Pokročilá podpora animací
OpenGL ES
Hardwarově akcelerované vykreslování
2D/3D objektů
Core Text
Sofistikovaný engine pro vykreslování textu
Image I/O
Čtení a zápis většiny rozšířených grafických formátů
The Assets
Library framework
Přístup k obrázkové knihovně uživatele
Technologie pro
zvuk
Tyto technologie umožňují přehrávat kvalitní audiozáznamy a používat
vibrace (na zařízeních, které to umožňují). Systém nabízí několik možností, jak
přehrávat či zaznamenávat zvuk. Vysokoúrovňové frameworky velice zjednodušují
vývoj, avšak neumožňují takovou míru ovlivňování operací. Následující frameworky
jsou seřazeny a od vysokoúrovňových po nízkoúrovňové.
The Media Player
framework – poskytuje přístup k iTunes knihovně a přehrávaní skladeb
AV
Foundation – poskytuje sadu Objective-C rozhraní pro správu přehrávání a záznamu
zvuku
OpenAL – poskytuje sadu multiplatformních rozhraní pro pozicovaný zvuk
(3D)
Core Audio framework – poskytuje rozhraní pro přehrávání a záznam zvuků,
umožňuje přehrávat systémové zvuky a upozornění, vibrovat a přehrávat
vícekanálový či streamovaný zvuk
iOS podporuje tyto zvukové formáty: AAC,
ALAC, A-law, IMA/ADPCM (IMA4), Linear PCM, µ-law, DVI/Intel IMA ADPCM, Microsoft
GSM 6.10, AES3-2003
Technologie pro video
Tyto technologie umožňují
přehrávat kvalitní video záznam nebo je pořizovat (na zařízeních, které to
umožňují) a pracovat s nim v aplikaci. Systém nabízí několik možností, jak
přehrávat či zaznamenávat video. Vysokoúrovňové frameworky velice zjednodušují
vývoj, avšak neumožňují takovou míru ovlivňování operací. Následující frameworky
jsou seřazeny od vysokoúrovňových po nízkoúrovňové.
Media Player framework –
umožňuje přehrávání videí (buď přes celou obrazovku, nebo pouze částečně)
AV
Foundation – sada Objective-C rozhraní pro záznam a přehrávání videa
Core
Media – popisuje nízkoúrovňové typy a rozhraní používané ve vysoko úrovňových
frameworcích
Core Services layer
Vysokoúrovňové služby poskytované Core
Services
Block objekty
Od verze 4.0 je možné používat objekty typu Block.
Jedná se o jazykový konstrukt jazyka C, který je možný používat ve stávajícím C
nebo Objective-C kódu. Block objekt reprezentuje anonymní funkci a související
data. Takový konstrukt je v jiných jazycích často nazýván closure nebo lambda.
Block objekty se hodí jako callback.
Grand Central Dispatch
Ve verzi 4.0
byla přidána technologie Grand Central Dispatch postavená na BSD, která umožňuje
správu úloh v aplikaci. GCD kombinuje asynchronní model programování s vysoce
optimalizovaným jádrem a poskytuje tak jednoduchou a zároveň efektivní
alternativu k vláknovému programování.
In App Purchase
Od verze 3.0 je
možné provádět platby uvnitř aplikace za dodatečný obsah či zrušení reklamy.
Lokační služby
Umožňují sledovat aktuální polohu uživatele. Služby využívají
k určení polohy veškerý dostupný hardware (Wi-Fi, telefonní síť, GPS). Aplikace
tak mohou uživateli nabídnout data relevantní k jeho poloze (např. nejbližší
restaurace apod.).
SQLite
Odlehčená SQL databáze umožňuje ukládání
uživatelských dat.
Podpora XML
Podpora pro zpracování XML dokumentů.
Poskytované frameworky
Framework
Popis
Address Book
Přístup k
databázi kontaktů uživatele
CFNetwork
Komunikace pomocí síťového rozhraní
Core Data
Ukládání strukturovaných dat a mapování na programové objekty
Core Foundation
Základní služby pro práci s řetězci, datumy, URL, vlákny,
porty, …
Core Location
Hledání aktuální geografické polohy uživatele
Core Media
Nízkoúrovňový přístup k audio/video
Core Telephony
Přístup k
informacím o mobilní síti
Event Kit
Přístup k událostem v kalendáři
Foundation
Obsahuje Objetive-C wrappery pro funkce z Core Foundation
Mobile Core Services
Nízkoúrovňové typy pro UTI
Quick Look
Poskytuje
možnost vytvořit náhled obsahu souboru, se kterým samotná aplikace není schopna
pracovat
Store Kit
Poskytuje přístup k iTunes Storu a možnost nákupů
System Configuration
Umožňuje zjišťovat dostupnost připojení k internetu a
jeho nastavení
Vrstva Core OS
Vrstva Core OS poskytuje nízkoúrovňové
funkce ostatním technologiím, které jsou na ní postaveny. I když nejsou většinou
v aplikacích využívány přímo, velice pravděpodobně je využívají vysokoúrovňové
komponenty systému.
Accelerate Framework
Poskytuje rozhraní pro práci s
matematickými funkcemi (obdoba java.math), velkými čísly, výpočty DSP apod.
Výhodou tohoto frameworku oproti vlastní implementaci těchto funkcí je fakt, že
v různých verzích iOS určených pro různá zařízení je tento framework
optimalizován pro daný hardware.
External Accessory Framework
Tento
framework poskytuje podporu pro komunikaci s externími zařízeními připojenými
přes Bluetooth nebo třicetipinový konektor zařízení. Framework také umožňuje
získávat informace o dostupném příslušenství a navázat komunikaci.
Security
Framework
Kromě vestavěných bezpečnostních vlastností iOS je možné využít
Security framework, který dokáže zaručit bezpečnost citlivých dat. K dispozici
jsou rozhraní pro certifikáty, soukromé a veřejné klíče, generování
kryptografických pseudonáhodných čísel apod. Dále je možné ukládat data do
zašifrovaného centrálního úložiště svazku klíčů (keychain). V tomto úložišti je
navíc možné údaje sdílet mezi aplikacemi (pouze v případě, že je aplikace
zkompilována s příslušným nastavením oprávnění).
Vývoj pro platformu iOS
V
iOS je možné spouště aplikace napsané v jazyku C nebo pokročilejším Objective-C.
Dlouhu dobu bylo možné vyvíjet pouze v aplikaci XCode, což je vývojové prostředí
od firmy Apple (nabízené zdarma). Toto prostředí je však dostupné pouze pro
operační systém Mac OS X, takže vývoj např. ve Windows či Linuxu není možný.
Tento problém se pokusilo řešit několik projektů, které se snažily kompilovat
programy napsané v jiných jazycích do nativního kódu Objective-C. Asi největším
počinem v této oblasti je krok společnosti Adobe, která v nové verzi svého
nástroje pro vývoj aplikací Flash umožňuje kompilovat právě do programu určeného
pro iOS. Tento (a podobné) nástroje však byly zakázány v licenčním ujednání, ale
po velké nevoli ze strany vývojářů byly opět povoleny.
Jailbreak
iOS je
poměrně uzavřený systém, který neumožňuje uživateli přístup do systému a také
omezuje možnost instalace aplikací – jediná možnost je přes oficiální App Store,
kde aplikace procházejí schvalovacím procesem ze strany společnosti Apple. Právě
nedostupnost některých aplikací a nemožnost přístupu do systému bývají motivem k
tzv. jailbreaku, což je proces, který modifikuje systém a umožní nahrávat
neautorizované aplikace a přistupovat ke chráněným souborům systému. Kromě
těchto výhod ale přináší rizika v podobě snížení výkonu, zvýšení spotřeby
energie a zvýšeného rizika napadení telefonu. Mnoho uživatelů také využívá
možnosti nahrávat do zařízení aplikace, které ‚ukradli‘ z internetu. Společnost
Apple se snažila bránit tomuto procesu u soudu, avšak nejnovější verdikt zní, že
je to legální zásah a nepoškozuje copyright společnosti Apple.
Zadní vrátka
iOS
Výzkumník cyber-bezpečnosti, Christopher Soghoian, upozornil na to, že v
říjnu 2011 byl v prostředí indické vojenské rozvědky rozeslán vnitřní oběžník,
vydaný plukovníkem Išwarem Singhem. Ten byl později získán hackery a zveřejněn
na internetu.[1] V oběžníku se píše, že „výměnou za přítomnost na indické
(mobilním) trhu“ výrobci mobilních zařízení zahrnující korporace
RIM, Nokia aApple souhlasili s umožněním a poskytnutím přístupu „zadními vrátky“
na jimi vyráběných zařízeních indické vládě, která následně tento přístup
informací utilizovala pro interní e-maily americko-čínské ekonomické
bezpečnostní a výzkumné komise a orgánům vlády USA s mandátem monitorovat,
vyšetřovat a podávat hlášení Kongresu na téma implikací národní bezpečnosti o
ekonomického vztahu a oboustranném obchodu mezi USA a Čínou.[2][3]