You are on page 1of 8

Alasdair Allan

Novatec
Aprendendo Programao
iOS
Authorized Portuguese translation of the English edition of titled Learning iOS Programming, 3rd edition, ISBN
9781449359348 2013 Alasdair Allan. This translation is published and sold by permission of O'Reilly Media,
Inc., the owner of all rights to publish and sell the same.
Traduo em portugus autorizada da edio em ingls da obra Learning iOS Programming, 3rd edition, ISBN
9781449359348 2013 Alasdair Allan. Esta traduo publicada e vendida com a permisso da O'Reilly Media,
Inc., detentora de todos os direitos para publicao e venda desta obra.
Novatec Editora Ltda. [2013].
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta obra, mesmo
parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.
Editor: Rubens Prates
Traduo: Rafael Zanolli
Reviso tcnica: Aurelio Jargas
Reviso gramatical: Marta Almeida de S
Editorao eletrnica: Carolina Kuwabata
ISBN: 978-85-7522-363-5
Histrico de impresses:
Julho/2013 Primeira edio
Novatec Editora Ltda.
Rua Lus Antnio dos Santos 110
02460-000 So Paulo, SP Brasil
Tel.: +55 11 2959-6529
Fax: +55 11 2950-8869
Email: novatec@novatec.com.br
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
17
CAPTULO 1
Por que seguir o caminho nativo?
Quando o iPhone foi originalmente apresentado, em 2007, no havia nenhum
SDK nativo. A Apple armava que um SDK desse tipo no era necessrio e que
aplicativos para o dispositivo deveriam ser construdos como aplicativos web
utilizando JavaScript, CSS e HTML. Isso no foi bem digerido pela comunidade
de desenvolvedores; eles queriam acesso direto ao hardware e integrao com os
prprios aplicativos da Apple.
Apenas alguns poucos meses depois do lanamento do iPhone, a comunidade de
cdigo aberto havia realizado algo que muitos consideravam impossvel. Apesar
de a Apple bloquear o dispositivo, desenvolvedores haviam obtido acesso, feito a
engenharia reversa do SDK e seguido para construir uma cadeia de ferramentas
de cdigo-aberto gratuita que lhes permitia desenvolver aplicativos nativos para
o dispositivo. Em determinado momento, estimava-se que mais de um tero dos
iPhones no mercado havia sido desbloqueado com jailbreak
1
por seus usurios,
permitindo que eles executassem esses aplicativos no sancionados de terceiros.
No entanto o livro que voc tem em mos no trata do SDK hacker de cdigo
aberto, pois, em maro de 2008, menos de um ano depois do lanamento do pri-
meiro iPhone, a Apple mudou de opinio publicamente e lanou um SDK nativo
para uma comunidade de desenvolvedores que estava espera. Se esse lanamento
foi ou no uma resposta aos esforos da comunidade de cdigo aberto, ou se esse
foi o tempo todo exatamente o plano de uma Apple notoriamente reservada,
isso provavelmente nunca saberemos.
1 N.T.: O Jailbreak um processo que permite que aparelhos com o sistema iOS (iPhone, iPod
Touch e iPad) executem aplicativos no autorizados pela fabricante Apple. Um aparelho com
Jailbreak capaz debaixaraplicativos anteriormente indisponveis pelaApp Storepor meio de
instaladores no ociais como oCydia, assim como aplicaes adquiridas de forma ilegal (fonte:
Wikipdia).
Aprendendo Programao iOS 18
Os prs e os contras
Quando o SDK nativo foi apresentado, muitas pessoas do setor argumentaram
que ele era, na realidade, um passo atrs para os desenvolvedores. Eles sentiam
que os aplicativos web eram sucientemente bons. Ao escrever um cdigo especi-
camente para o iPhone em Objective-C, voc estava tornando mais difcil portar
seus aplicativos, e a portabilidade de um aplicativo web consistia mais ou menos
em simplesmente reestiliz-lo utilizando um novo template CSS.
Parecia que os usurios dos aplicativos discordavam. Pode-se discutir porque
isso ocorreu, mas muito difcil desenvolver aplicativos web de aparncia nativa
que possam ser reutilizados em muitas plataformas diferentes, ainda que isso
seja possvel. Da mesma forma que os aplicativos do desktop Mac que foram
portados do Windows tendem a incomodar como um polegar dolorido por no
funcionarem como espera o usurio, aplicativos web, especialmente aqueles que
devem ser utilizados em plataformas distintas, tendem a fazer o mesmo.
Apenas para deixar claro, isso no uma crtica ao HTML, s CSS e ao JavaScript.
O acervo de tecnologias da web slido e est amadurecendo, e a atrao de
termos uma base de cdigo de multiplataforma ser imediatamente bvia para
voc como desenvolvedor. No entanto, para seus usurios, isso no to bvio. A
maioria dos argumentos apresentados em suporte ao uso de tecnologias web, ou
de outros frameworks no nativos, feita a partir da perspectiva do desenvolvedor.
Ainda que isso no os torne invlidos, voc deve analisar cuidadosamente esses
argumentos pela perspectiva do usurio, pois nenhum deles trata realmente da
principal considerao: a usabilidade.
Consumidores no compraro seu aplicativo na plataforma deles simplesmente
porque voc suporta outras plataformas; em vez disso, eles querem um aplicativo
que tenha o mesmo visual dos outros aplicativos da plataforma deles, que siga os
mesmos paradigmas de interface do restante dos aplicativos com que eles esto
acostumados e que esteja integrado a essa plataforma.
Se voc integrar seu aplicativo ao ambiente do iOS, zer uso das possibilidades
que o hardware oferece e se certicar de que sua interface de usurio est oti-
mizada para o dispositivo, a experincia de usurio ser muito melhor. Tudo
isso possvel utilizando tecnologias web, mas, na maior parte do tempo, ser
realmente difcil escrever aplicativos no nativos que funcionem bem em vrias
plataformas. ainda mais difcil fazer com que eles paream nativos em meia
dzia de plataformas distintas.
19 Captulo 1

Por que seguir o caminho nativo?


Por que escrever aplicativos nativos?
A razo bvia de utilizarmos um SDK nativo fazer algo que no pode ser feito
utilizando tecnologias web. A primeira gerao de aplicativos de realidade aumen-
tada um exemplo disso; esses aplicativos necessitavam de uma integrao mais
prxima com os sensores do iPhone (por exemplo, GPS, acelermetro, bssola
digital e cmera) e no teriam sido possveis sem esse acesso.
Ainda que o navegador Safari no iOS suporte as capacidades de localizao
geogrca que o HTML 5 fornece (http://www.w3.org/TR/geolocation-API/), isso no
elimina o problema por completo. duvidoso que todo o hardware especco
da plataforma obtenha o mesmo tipo de tratamento em HTML 5, por isso
improvvel que voc veja a chegada de aplicativos web de realidade aumentada.
Se voc vem de uma experincia com desenvolvimento web, pode estar
interessado no framework multiplataforma PhoneGap (http://phonegap.com/). Esse
framework fornece classes encapsuladoras nativas e permite que voc desenvolva
aplicativos nativos em HTML/JavaScript para vrias plataformas mveis. Uma
das plataformas s quais ele se direciona o iOS.
s vezes, no se trata de fazer algo que no pode ser feito, mas de fazer tudo mais
rpido e de realizar a manipulao de erros no lado do cliente. Por exemplo, os
aplicativos do iTunes e da App Store da Apple que so fornecidos com o iOS so,
na realidade, aplicativos web encapsulados dentro de aplicativos nativos. Exata-
mente como o iTunes e a App Store no desktop Mac, o painel principal que voc
v , na realidade, apenas uma pgina web, mas a infraestrutura circundante um
aplicativo nativo. Isso signica que, ainda que o aplicativo no possa fazer muito
sem uma conexo de internet, ele pode pelo menos ser inicializado sem problemas.
Porm esses so exemplos extremos. Muitos dos aplicativos da App Store com-
binam dados remotos e interfaces nativas. Sem acesso rede, parte da UI est
geralmente desabilitada. No entanto aplicativos nativos podem ser construdos
de modo que ocorra com eles uma degradao elegante quando a conexo de
rede do dispositivo desaparecer ou caso ela nunca esteja presente em primeiro
lugar. O usurio ainda pode ver os elementos do aplicativo que no necessitam
de uma conexo de rede para funcionar.
s vezes, tambm devemos considerar aquilo de que um aplicativo no necessita.
Se ele no necessita de uma conexo de rede, manter seu telefone conectado
rede para utiliz-lo, consumindo energia extra da bateria no processo, um des-
perdcio. Mesmo quando ele est conectado, o dispositivo nem sempre tem acesso
Aprendendo Programao iOS 20
a uma conexo de internet rpida. Tudo que voc puder fazer para minimizar a
quantidade de dados que voc precisa puxar pela conexo de rede vai melhorar
a interao dos usurios com seu aplicativo. Isso signica gerar sua interface de
usurio de modo local e preench-la com dados acessados da internet.
O desempenho de rede afetar a percepo do usurio da velocidade; renderizar
sua interface de usurio enquanto uma solicitao web feita para preench-la
permite que seu aplicativo permanea responsivo interao do usurio, mesmo
enquanto ele espera pela rede. Isso s pode ser algo bom.
Ainda nem sequer mencionei o desenvolvimento de jogos, e, com a Apple divul-
gando o iPod touch como o iPod mais divertido de todos os tempos, isso algo
importante. Voc no pode desenvolver os tipos de jogos que agora comeam a
aparecer na App Store utilizando tecnologias web. Ainda que este livro aborde o
bsico de como programar para dispositivos iOS, se voc quiser se aprofundar na
programao de jogos nessa plataforma, recomendo o livro Tap, Move, Shake: Turning
Your Game Ideas into iPhone & iPad Apps (http://shop.oreilly.com/product/0636920018414.do)
[em uma traduo livre, Toque, movimente e balance: transformando suas ideias
de jogos em aplicativos iPhone e iPad], de Todd Moore (OReilly).
O ciclo de lanamento
Paul Graham, um de meus divulgadores de conhecimento favoritos, argumenta
que a chegada dos softwares web mudou no apenas a experincia do usurio,
mas tambm a experincia do desenvolvedor:
Uma das mudanas mais importantes neste novo mundo a forma como
voc realiza lanamentos. No mercado de software desktop, a realizao
de um lanamento um enorme trauma, no qual toda a empresa sofre
e se esfora para empurrar para fora um nico e gigante fragmento de
cdigo. Comparaes bvias sugerem a si prprias, tanto com relao ao
processo quanto com relao ao produto resultante.
De The Other Road Ahead
(em uma traduo livre, A outra estrada adiante), de Paul Graham
Ele est exatamente certo. Trabalhando na nuvem, voc raramente realiza um
lanamento de software no velho sentido da palavra. Apesar dos benefcios, devo
admitir que, na realidade, sinto saudades desse empurro nal, no qual, geral-
mente com uma enorme ansiedade, voc lana uma verso nova e melhorada de
um fragmento de software. No entanto um problema com a escrita de aplicativos
nativos que zemos um retorno ao ciclo de lanamento.
21 Captulo 1

Por que seguir o caminho nativo?


Com um software web voc pode fazer lanamentos incrementais, corrigindo
bugs quando eles ocorrem e se eles ocorrerem. Aplicativos nativos so muito mais
parecidos com um software desktop.
Abordo os detalhes do envio de aplicativos para a App Store no captulo 13. No
entanto voc deve se preparar agora para experimentar algum grau de dor. O
processo de reviso notoriamente obscuro, alm de demorar algum tempo. Alm
disso, cada um de seus aplicativos deve passar por ele, e no apenas quando voc
enviar o aplicativo inicialmente para a loja, mas tambm para cada nova verso
que voc lanar. Geralmente, pode demorar at sete dias desde o envio de seu
aplicativo at que ele seja aprovado (ou rejeitado) pela equipe de reviso, ainda
que isso possa demorar muito mais. Apesar de alguns de meus aplicativos terem
percorrido rapidamente o processo de envio em apenas alguns poucos dias, j
tive aplicativos no processo de reviso por at quatro meses antes que recebessem
aprovao.
Se voc est interessado em saber como o perodo mdio de reviso para
aplicativos iOS e OS X muda com o passar do tempo, d uma olhada no Average
App Store Review Times (http://reviewtimes.shinydevelopment.com/). O site, criado
por Dave Verwer, um reconhecido desenvolvedor iOS, rastreia o perodo mdio
de reviso da App Store para aplicativos enviados para a App Store tanto do
iOS quanto do Mac, utilizando dados de crowdsourcing de desenvolvedores
no Twitter.
Desenvolva e eles viro
Antes, neste captulo, argumentei contra aplicativos web, pois eles requerem uma
conexo de internet; evidentemente, essa no a verdade completa. Voc pode
escrever um aplicativo web utilizando o Ofine Application Cache disponvel no
HTML 5, ainda que haja limitaes bvias a essa abordagem. No entanto a grande
vantagem de um aplicativo nativo, mesmo com a App Store superlotada de hoje,
a exposio. Se ningum puder encontrar seu aplicativo, ningum poder pagar
por ele, e a web um lugar grande.
Uma vantagem signicativa que um aplicativo nativo tem sobre um aplicativo web
a de que ele mais fcil de ser encontrado por usurios potenciais e muito
mais fcil que paguem para obt-lo. Isto , se voc conseguir fazer com que as
pessoas paguem por aplicativos web. As pessoas no assinam por impulso um
web service; elas compram por impulso na App Store.
Aprendendo Programao iOS 22
No entanto no presuma que, se voc desenvolver algo, os usurios aparecero. A
no ser que voc seja realmente sortudo e que seu aplicativo se torne viral, voc
ainda ter de fazer o marketing dele. A App Store pode ser muito menor do que
a web, mas ainda um lugar bastante grande.
O marketing de seu aplicativo como o marketing de qualquer outro produto:
voc precisar utilizar as ferramentas disponveis e seus contatos para levar as
novidades de seu software at seu mercado-alvo. A Apple fornece cdigos pro-
mocionais para seu aplicativo (embora, quando este texto foi escrito, eles ainda
funcionassem apenas na App Store norte-americana) que oferecem downloads
gratuitos de seus aplicativos. Muitos desenvolvedores contatam blogs de alto perl
ou os inmeros sites de catlogo de aplicativos e oferecem a eles cpias de reviso
na esperana de que faam a publicidade do aplicativo. Se o aplicativo for bem
projetado e til, eles podero muito provavelmente car interessados em revis-lo.
Produza uma apresentao de vdeo mostrando como seu aplicativo funciona e
como utiliz-lo. Dessa forma, tambm, aplicativos com bons recursos de suporte
(como fruns e sistemas de bug tracking) vendem mais cpias. Aplicativos com
um bom design se destacam na loja e vendem mais cpias.
Um bom design frequentemente signica que voc faz tudo do jeitinho da Apple.
Integre seu aplicativo adequadamente com os outros aplicativos do telefone. No
reinvente a roda utilize os widgets e os elementos de interface padro que so
familiares a usurios do iOS.

You might also like