Programování pro iOS - 9. Jak dostat aplikaci do iPhone - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se narodil známý fotograf František Drtikol?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Informace

Programování pro iOS - 9. Jak dostat aplikaci do iPhone

29. září 2010, 00.00 | Prvá verze bouřkoměru je hotová. Před odesláním aplikace do AppStore je ale samozřejmě zapotřebí ji vyzkoušet na skutečném hardwaru. V našem případě v iPhone.

Jak uvidíme, není to vůbec tak jednoduché, jak by se na první pohled mohlo zdát. Pokud totiž nepoužíváme "jailbreak" (neoficiální "odemčení" operačního systému iPhone), neexistuje způsob, jak do něj dostat spustitelný kód, který není podepsán certifikátem, vydaným společností Apple. (O digitálním podepisování jsme si něco málo řekli zde.)

Abychom takový certifikát získali, musíme absolvovat následující kroky:

Založení konta u Apple

Prvým z kroků je založení konta, které reprezentuje vývojářskou firmu, u Apple; bez toho není možné (vyjma hraní si se simulátorem, jímž jsme se zabývali v předcházejících dílech) ani začít.

Tento krok není plně automatizovaný, a také není zdarma: zájemce se musí přihlásit na stránce developer.apple.com/programs/ios, počkat na schválení firmou Apple, a zaplatit 99 dolarů. To je cena, kterou si za možnost vývoje pro iOS Apple účtuje každým rokem.

Poté, co nám Apple vytvoří odpovídající konto, získáme přístup do samostatné webové aplikace "iPhone Provisioning Portal"; jakmile se přihlásíme k vývojářským stránkám developer.apple.com/devcenter/ios s uživatelským jménem, které má do této aplikace přístup, standardně uvidíme v pravém horním rohu odpovídající odkaz:

Hlásíme se tedy týmž jménem ("apple id"), které už používáme dávno; jediný rozdíl spočívá právě v tom, že firma Apple nám přidělila právo k přístupu do aplikace "iPhone Provisioning Portal".

Alternativou samozřejmě je se připojit k některé již existující firmě, která pro iOS aplikace vyvíjí; v takovém případě nám přístup do aplikace "iPhone Provisioning Portal" v rámci jejího konta mohou přidělit její vlastní správci.

Jen pro úplnost neuškodí se zmínit o tom, že Apple korektně podporuje i případ, kdy je jeden člověk (přesněji, jedno přihlašovací jméno) členem více týmů: v takovém případě portál developer.apple.com prostě po přihlášení nechá uživatele vybrat, v rámci kterého z týmů chce v této session pracovat.

Nadále tedy budeme předpokládat, že přístup do aplikace "iPhone Provisioning Portal" již máme, a ukážeme si, co a jak je zapotřebí udělat v ní.

Certifikát vývojáře

Každý programátor, který chce sestavovat aplikace pro zařízení s operačním systémem iOS, musí mít vlastní certifikát (co je to certifikát?), jehož prostřednictvím bude podepisovat sestavené aplikace. Jelikož jde o certifikát vydaný společností Apple, iPhone či iPad umožní instalaci a spuštění kódu, který je takto podepsán – při splnění některých dalších podmínek, jež si vysvětlíme níže.

Pozor! Máte-li dostatečně aktuální verzi vývojového prostředí Xcode, může za vás tuto práci zajistit skoro automaticky; k tomu se vrátíme na konci článku v odstavci "Podpora v Xcode". Teď si ale nejprve vysvětlíme, co vše je pro vývoj zapotřebí a jak to lze prostřednictvím portálu získat; je velmi vhodné tomuto mechanismu rozumět, byť i některé z následujících kroků není nutné dělat "ručně", ale lze je ponechat na Xcode.

Vystavení certifikátu si vyžádáme pomocí standardizovaného požadavku ve formátu CSR. Ten musíme sestavit na vlastním počítači; jeho součástí je totiž vygenerování privátního klíče (co je to privátní klíč?) – ten je naším hlavním "tajemstvím" a neměl by nikdy opustit náš vlastní počítač (jinak, než v dobře zašifrované záložní kopii).

Požadavek na vystavení certifikátu dokáže vytvořit aplikace Certificate Assistant. Nenalezneme ji ale ve standardní složce "Utilities", kam by logicky patřila; namísto toho se spouští pomocí samostatné položky v nabídce aplikace Keychain Access:

Zde pak do polí dialogového okna zapíšeme e-mailovou adresu a jméno, jež budou součástí vydaného certifikátu – firma Apple zároveň požaduje, aby šlo o adresu a jméno, jež jsou uloženy jako součástí vývojářského konta na developer.apple.com. Naopak e-mailovou adresu certifikační autority ("CA Email Address") nevyplňujeme – tou je Apple a dobře to ví :)

Z toho také nepřímo plyne, že výsledný certifikát si musíme nechat uložit na disk. Položka "Let me specify..." není zapotřebí – ta nám umožní určit délku klíče a šifrovací algoritmus; standardní hodnoty – algoritmus RSA a klíč délky 2048 – by měly být standardní výchozí hodnotou. Chceme-li mít jistotu, můžeme samozřejmě "Let me..." zaškrtnout a RSA/2048 si v následujícím dialogovém okně ověřit; jinak se rovnou sestaví veřejný i tajný klíč, oba se uloží do standardního keychainu (co to je?), a do souboru, jehož jméno můžeme zvolit pomocí standardního panelu "Save", se uloží požadavek.

Mimochodem: máme-li již vygenerovaný pár klíčů, který bychom chtěli použít, není to problém: zobrazíme si privátní klíč v keychainu, označíme jej, a teprve pak spustíme Asistenta – již položka v nabídce bude odlišná (namísto "Request a Certificate From a Certificate Authority..." uvidíme "Request a Certificate From a Certificate Authority With “jméno zvoleného klíče”"), a při následné akci se nebude generovat nový pár klíčů, ale použije se ten zvolený.

Pak jen požadavek pošleme Apple pomocí tlačítka "Request Certificate" ve stránkách aplikace "iPhone Provisioning Portal" po přepnutí do režimu "Certificate":

Webová aplikace po přijetí požadavku zobrazí v tabulce řádek pro nový certifikát, přičemž ve sloupci "Status" bude "Pending Issuance" – vystavení certifikátu chvilku trvá (typicky jen několik desítek sekund).

Zatímco na něj budeme čekat, stáhneme si pomocí odkazu "click here to download now" certifikát Apple WWDR: ten potřebujeme jako součást řetězu certifikačních autorit (jak to funguje?), jímž bude náš vývojářský certifikát podepsán. To uloží na disk soubor "AppleWWDRCA.cer"; stačí na něj poklepat ve Finderu, a aplikace Keychain Access jej automaticky otevře a certifikát, který je v něm zabalen, uloží do zvoleného keychainu.

Mezitím už určitě máme certifikát u Apple připraven; pokud se obsah stránky neobnovil automaticky, můžeme překlepnout třeba na "History" a zpět na "Development". Ve sloupci "Status" pak uvidíme "Issued", a ve sloupci "Action" tlačítko "Download" (a odkaz "Revoke", jímž bychom mohli platnost certifikátu zrušit, kdybychom chtěli):

Použijeme tlačítko "Download", jež nám na počítač uloží další soubor ve formátu CER (obvykle se jmenuje nějak jako "developer_identity"); uložíme jej opět do keychainu stejně jako certifikát WWDR, stačí soubor prostě jen otevřít.

Už můžeme tedy sestavovat aplikace, jež poběží na iPhone?

Ale kdež. To bychom to měli moc jednoduché. Apple nejenže vývojářům nedovoluje sestavovat aplikace bez certifikátu; navíc i s ním je vývoj vázán jen na konkrétní, předem pevně danou skupinu konkrétních zařízení!

Správa zařízení

Máme-li vývojářský certifikát, je to teprve první krok k možnosti sestavovat aplikace pro iPhone či iPad (o iPodu Touch či naopak případných budoucích zařízeních nemluvě). Ve druhém kroku musíme do aplikace "iPhone Provisioning Portal" zapsat identifikační čísla všech zařízení, pro něž chceme aplikace sestavovat.

Každé zařízení se systémem iOS má vlastní identifikační číslo; říká se mu "UDID" ("Unique Device IDentifier"), a je generováno interně, způsobem, o němž Apple tvrdí, že je prý bezpečně anonymní v tom smyslu, že ze známého UDID nelze zjistit žádné konkrétní detaily o zařízení, jemuž patří.

Nejjednodušší způsob, jak UDID pro konkrétní zařízení zjistit, nabízejí iTunes: připojíme přístroj k počítači, otevřeme iTunes, zařízení najdeme ve skupině Devices a aktivujeme záložku "Summary". Zde normálně vidíme jedenáctimístné sériové číslo; stačí na ně ale klepnout myší, a zobrazení se ihned přepne na UDID:

Pokud v tomto režimu použijeme příkaz "Copy", UDID se uloží do schránky, takže jeho čtyřicet hexadecimálních číslic není zapotřebí opisovat ručně.

Ze schránky můžeme UDID rovnou uložit do aplikace "iPhone Provisioning Portal": přepneme ji do panelu "Devices", kde je pomocí tlačítka "Add Devices" můžeme – spolu se jménem, podle nějž zařízení rozpoznáme – přímo zadat do webového formuláře.

Pozor na to, že aplikace "iPhone Provisioning Portal" nám nedovolí zapsat více, než sto zařízení ročně: pro samostatného vývojáře nebo malou firmu je to ovšem dostatečná rezerva; pokud bychom ale chtěli využívat služby řady betatesterů, navíc třeba pro každou z aplikací jiné skupiny lidí, můžeme zjistit, že je to limit nepříjemně nízký.

Identifikátor aplikace

Každá aplikace nebo skupina aplikací potřebuje mít vlastní identifikátor – v podstatě jde o textový řetězec, který (spolu s "bundle id", jenž nastavujeme v projektu) slouží pro rozpoznání aplikace

• při přístupu ke službám In-App purchase;

• při přístupu ke službám Game Centre;

• pro rozesílání tzv. "push notifikací" ze serveru;

• při přístupu k šifrovaným položkám v keychainu.

U jednoduchých aplikací, jež nic z toho nepotřebují, je nejjednodušší pro vývoj používat obecný identifikátor, který se skládá z náhodně vygenerovaného textu v části "Bundle Seed ID" – tu webová aplikace na vyžádání vytvoří sama –, a z hvězdičky v části "Bundle Identifier":

S tím pak vystačíme pro všechny aplikace.

Profily

Propojení mezi aplikacemi, vývojáři a konkrétními zařízeními zajišťují tzv. profily: speciální dokumenty, jež obsahují

• identifikátor aplikace (nebo skupiny aplikací), pro než profil slouží;

• seznam (certifikátů) vývojářů, kteří mohou tento profil používat;

• seznam UDID zařízení, pro něž tento profil platí;

• typ profilu.

Při práci s aplikací "iPhone Provisioning Portal" běžně pracujeme se dvěma typy profilů: provozní ("provisioning") profil umožní spuštění a instalaci aplikace, která byla při vývoji podepsána některým z vývojářů, jejichž certifikáty jsou součástí profilu, na některém ze zařízení, jejichž UDID v němž jsou uložena. Distribuční profil pak slouží k distribuci aplikace na AppStore; tím se budeme zabývat později.

Sestavení provozního profilu ve webové aplikaci je jednoduché: vyžádáme si jeho vytvoření v záložce "Provisioning" pomocí tlačítka "New Profile", určíme jeho jméno, a vybereme identifikátor aplikace, vývojáře a zařízení, jež profil má obsahovat. Jeho sestavení opět chvilku trvá – stejně jako tomu bylo u certifikátu – a pak si jej můžeme stáhnout pomocí tlačítka "Download":

Tyto profily mají typ "mobileprovision" a po otevření se automaticky nainstalují do Xcode.

Co tedy vše potřebujeme?

Dříve, než sestavíme prvou aplikaci pro iPhone, musíme tedy mít

• v keychainu certifikát Apple WWDR;

• tamtéž vlastní vývojářský certifikát, vygenerovaný Apple;

• a také pár klíčů, umožňující tímto certifikátem šifrovat a podepisovat;

• v Xcode pak musíme mít instalovaný provozní profil, v němž je odkaz na náš vývojářský certifikát, UDID zařízení, pro nějž chceme aplikaci sestavit, a identifikátor aplikace, který je s ní kompatibilní (nejjednodušší je výše zmíněná hvězdička).

Certifikát potřebujeme proto, aby vývojový systém při sestavování aplikace mohl vygenerovat digitální podpis.

Profil je nutné nainstalovat do cílového zařízení; jeho systém pak přijme jen ty aplikace, jež jsou podepsány certifikátem, který je v některém z profilů v zařízení instalovaných.

Konečně už tedy můžeme otevřít cíl projektu, přepnout jej do záložky "Build", v ní vyhledat oddíl "Code Singing", a v tom zvolit vhodný certifikát pro podepisování (obvykle budeme mít jen jeden; já jich mám více, neboť jsem členem více vývojářských týmů) a profil, odpovídající právě sestavované aplikaci:

Pak můžeme v levém horním rohu okna Xcode přepnout na "Device". Ověříme, že zařízení je připojeno k počítači, a pomocí příkazu "Build & Run" necháme aplikaci přeložit pro cílovou architekturu ARM. Xcode automaticky hotovou aplikaci i zvolený provozní profil instaluje do zařízení a aplikaci spustí.

Jednoduché, že?

Já vím. Ani trochu.

Zřejmě to tak připadalo mnoha vývojářům, a ti si tak dlouho stěžovali, až se firma Apple rozhodla jim život alespoň trochu usnadnit: v poslední době máme v Xcode k dispozici podporu, která řadu výše popsaných služeb automatizuje.

Podpora v Xcode

Od verze 3.2.3 nahoru nám Xcode dokáže ušetřit spoustu práce pomocí automatizovaných služeb, jejichž uživatelské rozhraní je k dispozici prostřednictvím okna Organizer: zde je možné si vyžádat automatické přidání UDID nového zařízení do aplikace "iPhone Provisioning Portal", vygenerování obecného profilu pro vývoj libovolné aplikace (jež nepotřebuje služby in-app purchase apod.), a řadu dalších služeb.

Nejprve se postaráme o to, aby v okně Organizer v záložce "Provisioning Profiles" byla zaškrtnuta volba "Automatic Device Provisioning":

Pak nové zařízení připojíme k počítači; Xcode načte jeho informace, zobrazí nám je v okně v seznamu "DEVICES", a tam také nalezneme tlačítko "Use for Development". Po jeho stisknutí

• si Xcode vyžádá vložení přihlašovacího jména a hesla pro portál developer.apple.com;

• automaticky se pak přihlásí k aplikaci "iPhone Provisioning Portal";

• je-li to zapotřebí, vyžádá si vytvoření vývojářského certifikátu;

• na Web uloží UDID nového zařízení;

• vytvoří profil jménem "Team Provisioning Profile: *", do nějž automaticky uloží certifikáty všech vývojářů z týmu a UDID všech zařízení – včetně toho nového. Pokud již profil existuje, zařízení do něj přidá;

• tento profil stáhne z Webu, uloží jej, a instaluje jej do daného zařízení.

Ostatní vývojáři si mohou tento profil stáhnout nebo obnovit po změnách pomocí tlačítka "Refresh".

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Tipy a Triky  

 » Rubriky  » Začínáme s  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: