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]