Como desenvolver para o iPhone pode ser extremamente
divertido e rentável. Com uma breve introdução ao ambiente de desenvolvimento,
seguido de exemplos práticos, são ensinados desde os conceitos mais básicos até
os mais avançados como GPS, acelerômetro e interface multi-touch. Para
que serve: Através de exemplos, dar os primeiros passos no
desenvolvimento de aplicativos para iPhone, a plataforma móvel que mais cresce
no mundo. Entender o quão fácil é desenvolver aplicativos que utilizam os
riquíssimos recursos do dispositivo. Em
que situação o tema é útil: Para aqueles que não querem ficar para trás e desejam entrar
no movimentado mercado de desenvolvimento de aplicativos para o iPhone ou
querem, como muitos outros programadores, simplesmente se divertir desenvolvendo
seus próprios apps. Autores: Gustavo Chaurais e Paulo Michels
29 de Junho de 2007, a data que marca o início de uma revolução no mundo da mobilidade digital. “Um iPod widescreen com controles de toque, um telefone celular revolucionário e um comunicador de internet inovador” foi a frase utilizada por Steve Jobs (CEO da Apple) para anunciar, em um keynote na Macworld 2007, a primeira versão de um dispositivo tão conhecido atualmente, chamado iPhone.
Hoje, na eminência do lançamento da sua terceira versão, o smartphone da Apple contém: um GPS; uma câmera digital de 2 megapixels; conectividade 3G, EDGE e Wi-Fi; suporte a voicemail visual, acelerômetros internos, uma interface multi-touch, toda a funcionalidade de um iPod Touch, um browser com suporte a WebKit, e muito mais. No entanto, provavelmente sua principal diferença em relação aos concorrentes esteja nos seus aplicativos, desenvolvidos por programadores do mundo inteiro e centralizados em um único ponto: a App Store. Seu SDK permite que programas sejam criados rapidamente e com uma experiência com o usuário surpreendente, nunca antes vista em um dispositivo móvel. Desta maneira, especialistas afirmam que o sucesso do iPhone não esteja no seu hardware, mas sim no seu software.
Vejamos então o porquê de tanta popularidade e como é fácil desenvolver aplicativos para o iPhone. Através de exemplos bastante introdutórios e práticos, abordaremos a base do SDK, os padrões envolvidos, as etapas da construção do software e os ingredientes de um programa de sucesso a ser disponibilizado na App Store.
O iPhone no Mercado
Se você ainda tem dúvidas se deve ou não iniciar no desenvolvimento de aplicativos móveis para esta plataforma, analisemos como anda o mercado atual e o iPhone no mundo.
Indo direto ao ponto, na Figura 1 você verá um gráfico publicado em Março de 2009 pela Net Applications. Você pode notar que o iPhone compreende mais de 60% (rumores apontam para 70% atualmente) do mercado no que se refere a acessos a internet por dispositivos móveis no mundo. O segundo lugar ficou para o sistema operacional Android, da Open Handset Alliance (liderada pela gigante Google), com menos de 9%.
Figura 1. Número de acessos à internet por dispositivos móveis no mundo
Quanto ao mercado de sistemas operacionais mundial, veja quem aparece com mais da metade da fatia relativa ao Linux no mundo (Figura 2). Comparando-o com o Android (lançado posteriormente), temos uma proporção de sete vezes seu valor. Note também que o iPod Touch posiciona-se em quinto lugar. Aplicativos desenvolvidos para o iPhone também rodam nestes dispositivos (com algumas restrições).
Figura 2. Sistemas operacionais no mundo
Voltando nossos olhos para o mercado brasileiro, segundo uma análise da Predicta, realizada em outubro de 2008, 54% dos acessos à internet através de um dispositivo móvel no Brasil partiram de um iPhone ou um iPod Touch. Ainda no mercado nacional, diversas empresas já lançaram aplicativos na App Store, dentre elas: Bradesco, Itau, Guia4Rodas, O Globo, Estadão, Buscapé, Heineken (Brasil), dentre outras.
Fazendo uma pesquisa rápida sobre a App Store, vemos que já existem mais de 35.000 programas para download, todos aprovados pela própria Apple, como falaremos adiante. Mais de 1 bilhão de downloads já foram realizados, gerando fortunas para seus desenvolvedores. Por exemplo, o jogo Crash Bandicoot Nitro Kart 3D, o primeiro pago da história da App Store (US$ 6), já rendeu estimados 4 milhões de dólares para a empresa Vivendi Games Mobile, já retirando a parte da Apple. O iShoot, desenvolvido por Ethan Nicholas, atingiu US$ 800.000 em lucros em apenas cinco meses. Além de diversos outros exemplos, inclusive de brasileiros lucrando muito alto.
E não para por aí. Empresas fabricantes de jogos afirmam que hoje é mais lucrativo e fácil desenvolver jogos para o iPhone/iPod Touch do que para o videogame Playstation, da Sony. A grande maioria dos aplicativos custa na faixa de US$0 a US$5,99 e o desenvolvedor fica com 70% do lucro (os 30% restantes vão para a Apple). Não é a toa que todos estão correndo para começar a desenvolver na plataforma.
Nos Estados Unidos, aconteceu de 8 a 12 de Junho de 2009 a Worldwide Developers Conference da Apple. Seus ingressos se esgotaram depois de 33 dias da abertura do evento para vendas, um recorde. Ou seja, através desses números, podemos notar que o número de desenvolvedores para iPhone no mundo cresce substancialmente, a cada dia. Contudo, se levarmos em conta que o iPhone SDK teve mais de 100 mil downloads em apenas 4 dias após ter sido disponibilizado pela Apple, esses números não nos surpreendem.
E o que preciso para entrar nesta onda?
Primeiramente, para iniciar o desenvolvimento de aplicativos para iPhone, você irá precisar de um computador Mac com processador Intel. Não, não é possível rodar o SDK do iPhone no Windows. Mas, quer dizer que vou ter que trocar meu PC? Infelizmente (ou felizmente), a resposta correta é sim.
É claro, também existem as opções ilegais ou não suportadas pela Apple: emular o sistema operacional utilizando programas como o VMWare, ou instalar o Mac OS X no seu próprio PC. Porém, para isso será necessário bastante conhecimento e uso de ferramentas “crackeadas”, as quais não são recomendadas e, logicamente, não cobriremos aqui.
Para os que não conhecem o mundo Mac, esta é uma grande oportunidade para experimentar algo novo. O Mac OS X (sistema operacional da Apple) é hoje totalmente sólido, com uma quantidade desprezível de bugs, vírus praticamente inexistentes, bastante simples de se utilizar (ao contrário do que muitos pensam) e tão poderoso quanto o Windows. Quem experimenta os produtos da maçã, se surpreende com sua qualidade e muito dificilmente se arrepende da mudança.
Preciso ter um iPhone? Chegaremos lá. Mas, podemos adiantar que não. Grande parte dos programas poderá ser testada em um simulador, no seu próprio computador. Apenas algumas funcionalidades não são suportadas pelo simulador como GPS e acelerômetros.
Outra novidade que muitos não irão gostar é a falta do Java para o desenvolvimento dos aplicativos, seguindo o padrão das outras plataformas móveis. Todavia, cabe aqui nosso humilde comentário (pois também fomos e somos programadores Java há anos): o mundo não clama e, certamente não necessita de Java para o iPhone. Na seção anterior, mostramos gráficos e números do sucesso dos softwares desenvolvidos para o iPhone (sem o Java). E, apesar de rumores sobre a Sun estar preparando uma máquina virtual para o aparelho, os controles e elementos de interface do iPhone (presentes na sua biblioteca Cocoa Touch) por si só já surpreendem qualquer um com sua facilidade de uso, flexibilidade e beleza. Algo que não pode ser obtido com Java ME. Ou seja, talvez desenvolvedores de jogos em Java ME fossem sentir alguma diferença (até conhecerem o Open GL ES), porém, aplicações corporativas, por exemplo, são muito bem elaboradas sobre o SDK disponível. O iPhone OS (sistema operacional derivado do Mac OS X) reutiliza diversos conceitos e bibliotecas comuns para programadores do mundo Mac e, certamente, poucos sentirão falta de algo que o Java ME os proporciona. O único empecilho, claro, é o aprendizado de uma nova linguagem, que, para programadores C/C++ parecerá “mamão com açúcar”.
Contudo, se ainda assim você quiser desenvolver algo em Java para o iPhone (bem como em qualquer linguagem com suporte à web), você pode construir uma página web baseada em WebKit e prover todo o seu projeto sem problema algum. Utilizando JavaScript e CSS você poderá contar ainda com transições, animações, acesso ao banco de dados do aparelho e até ao seu GPS (apenas no iPhone OS 3), dentre outros recursos.
Com seu Mac pronto para iniciar o desenvolvimento, você precisará se cadastrar no site da Apple como desenvolvedor registrado para o iPhone. Esse cadastro é gratuito e lhe dará acesso ao download do SDK, vasta documentação, foruns, exemplos, vídeos, etc. E, caso você tenha interesse em desenvolver projetos profissionalmente para a plataforma, poderá se cadastrar no iPhone Developer Program (US$ 99). Sendo assim, terá acesso a informações personalizadas e, principalmente, poderá testar seus aplicativos no aparelho e publicar programas na App Store. Caso esteja desenvolvendo um projeto para um cliente/empresa, poderá solicitar para que esse se registre no programa e tenha seu nome vinculado ao aplicativo na App Store. Existe ainda um último tipo de cadastro chamado de Enterprise (US$ 299) para os que não desejam publicar seus aplicativos na App Store, mas sim, fazer a distribuição interna, dentro de sua organização.
Após o registro no site da Apple, o download e a instalação (bastante simples) do SDK, você está pronto para iniciar. É aqui que começa a diversão!
Um pouco de Objective-C
Mas antes de entrar de cabeça no nosso primeiro exemplo, precisamos ao menos explicar o básico sobre esta poderosa linguagem, o Objective-C. Infelizmente, não será possível um grande aprofundamento aqui. Abordaremos o conteúdo suficiente para a compreensão do artigo e deixaremos a cargo do leitor a procura por documentação adicional para o aprendizado completo sobre a linguagem. Sugerimos também, uma leitura prévia sobre ANSIC.
Uma boa notícia é que se você já teve contato com alguma linguagem orientada a objetos, não terá grandes dificuldades para entender o Objective-C.
O Objective-C pode ser entendido como uma extensão da linguagem ANSI C, com poderosos conceitos de Smalltalk (como a flexibilidade da transmissão de mensagens entre objetos). Ou seja, experiência em C/C++ certamente lhe ajudará a diminuir o tempo de aprendizado da nova linguagem.
Vamos começar com alguns conceitos básicos: os arquivos, diferentemente de uma linguagem como Java, serão divididos em header files (.h) e source files (.m). Ou seja, as classes serão criadas da seguinte maneira: a declaração dos métodos, atributos e outros elementos, será feita no arquivo header. Sua implementação, no arquivo source de mesmo nome. Para referenciar outros arquivos dentro do atual, utilizaremos a instrução #import. Por exemplo, #import "MyClass.h" importará o arquivo header MyClass.h, contido no mesmo diretório do arquivo atual. Vale lembrar que apenas headers são importados. Você nunca importará um arquivo source para dentro de outro arquivo.
Você certamente já ouviu: os ponteiros são os grandes vilões da linguagem C. Muitos programadores têm até medo deles! Mas, certamente, eles não são tão difíceis de se entender. Logicamente, isso necessita de prática.
Imagine um ponteiro como sendo uma variável apontando para uma região da memória. Ou seja, toda vez que você instancia um objeto, o método construtor alocará espaço na memória e retornará o endereço dessa região da memória para ser armazenado na variável que representa o objeto.
No Objective-C, isso não será diferente da linguagem C. Ou seja, para declarar um objeto/ponteiro, você utilizará:
MinhaClasse *meuObjeto;
Note o asterisco antes de meuObjeto. Isso significa que você está declarando um ponteiro para meuObjeto. Ou seja, esta variável apontará para uma região da memória onde está uma estrutura do tipo MinhaClasse. Este é o conceito de ponteiros mais básico. Vamos nos aprofundando à medida que algo diferente apareça.
A transmissão de mensagens no Objective-C foi herdada do Smalltalk e também é algo bastante simples. Ela pode ser compreendida como uma alternativa ao simples ato de se chamar métodos. Ao enviar uma mensagem para um objeto/classe, este poderá recebê-la e tratá-la como bem quiser. Além disso, o remetente da mensagem poderá esperar um retorno. Vejamos como se envia uma mensagem para um objeto/classe em ...