O primeiro de uma série de tópicos que visa, com uma linguagem fácil e descontraída, servir de guia para quem está começando ou tem interesse no desenvolvimento de apps nativos para iOS.
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Desenvolvendo apps nativos para iOS - Tópico ZERO
1. 1Tópico ZERO
Desenvolvendo apps nativos para iOS – Tópico ZERO
Por André Luiz Salla
Se você está começando a desenvolver para
iOS, alguns pontos podem te assustar ou mesmo te
afugentar antes mesmo de escrever sua primeira linha de
código. É para ajudar nessa pequena jornada que resolvi
escrever uma série de pequenos tópicos para guiá-lo
nesses primeiros passos no mundo do iOS.
Não quero bancar o professor aqui, nem ser o
cara que fala “javanês” como se todo mundo nascesse
sabendo (aqui no caso seria mais um objectivês). Meu
objetivo é ser claro, direto (ok, algumas vezes não tem
como ser tão direto assim), e proporcionar uma leitura
fácil, quebrando aquele paradigma de que todo texto
técnico tem que ser maçante e chato.
Antes de começarmos a pôr a mão na massa,
eu vou, nesse tópico, fazer uma breve introdução do que
é desenvolver um app nativo para iOS: qual a diferença
de um app nativo, o que é necessário para desenvolver,
quais linguagens posso usar.
Por que nativo?
Qual a vantagem de desenvolver um app
nativo? Por que devo optar por investir tempo e dinheiro
para aprender uma linguagem de programação e como
usar os recursos de uma nova ferramenta de
desenvolvimento? Essa pergunta não é tão simples de
responder. Por isso, vou apresentar alguns pontos
positivos do desenvolvimento nativo, e fazer um
comparativo com as outras formas de desenvolver um
aplicativo mobile existentes no mercado: web e híbrida.
Um app nativo opera fortemente integrado à
recursos de hardware, ou seja, explora ao máximo os
recursos que a plataforma (no caso o smartphone)
oferece. Em consequência, ele consegue rodar usando o
“Vamos desenvolver apps
nativos para iOS? Legal! Mas
por onde eu começo?”
2. 2 Desenvolvendo apps nativos para iOS
máximo dos recursos disponíveis do sistema operacional,
obtendo uma performance sem igual.
Em contrapartida, desenvolver um app nativo
acaba gerando um aumento de custos, fazendo com que
a empresa tenha que manter times distintos para
desenvolver um mesmo app para diferentes plataformas
(como por exemplo, manter uma equipe iOS, outra
Android e outra Windows Phone).
Foi então que outras alternativas começaram
ao desenvolvimento nativo surgiram no mercado: o web
app e o app híbrido.
Web Vs. Nativo
Abaixo, listo algumas das principais diferenças
entre o Web App e um App Nativo:
Um web app opera em um navegador, utilizando
comumente HTML5 e Javascript para realizar suas
tarefas. Por ser independente de plataforma, é capaz de
rodar em qualquer dispositivos de modo semelhante,
sem que haja necessidade de versões específicas para
cada um (como iOS e Android por exemplo).
O Web App, ao contrário de um app nativo, não
é disponibilizado em uma store (App Store pra iOS ou
Google Play pra Android), e é acessado por uma url.
A instalação de um Web App consiste apenas na
criação de um ícone na sua Home que irá lhe direcionar
para a página do aplicativo. No nativo, o app é de fato
instalado no armazenamento do smartphone.
No app nativo, o tráfego de dados é reduzido,
uma vez que o app opera direto no celular, deixando
qualquer operação web destinada apenas à necessidade
de acesso externo, reduzindo a dependência da rede.
Híbrido: o divisor de águas do desenvolvimento mobile?
Os apps híbridos são o meio termo entre o
nativo e o web, falando de forma bem simplória. O web
app não tem acesso ao recursos do sistema, mas tem um
custo reduzido de produção. Já o app nativo tem um
custo mais alto de produção, mas tem total acesso à
todos os recursos do sistema. O app híbrido oferece um
custo reduzido de produção, uma vez que pode rodar em
qualquer plataforma, e também oferece acesso aos
recursos do sistema, como câmera ou galeria de fotos.
Apesar de ser bem versátil e prático quanto à
aplicativos que não exigem o poder total do hardware,
como aplicativos comerciais, os apps híbridos ainda
perdem dos nativos quando falamos de desempenho,
como, por exemplo, apps com animações pesadas ou
jogos.
A GeekDotCom é uma empresa que vende produtos para geeks, gamers, nerds, e se orgulha do seu
público; tanto que seu logotipo, por mais estranho que pareça, é a cabeça de um troll usando óculos 3D.
Até o início do ano, a GeekDotCom vendia seus produtos exclusivamente pelo seu site. Foi então que
o geek mor Renato (conhecido nas partidas de RPG como Évelon, o mago da biosfera), proprietário da
GeekDotCom, resolveu investir em uma nova forma de atender seu público: os smartphones. Afinal, qual geek
não gostaria de poder comprar seu sabre de luz direto do seu próprio celular???
Mas a ideia não se mostrou tão simples quanto Renato imaginou...
Uma verdadeira guerra custo-benefício se instaurou para determinar como esse app para
smartphones seria desenvolvido. Sua equipe de desenvolvimento levantou então três opções para que o app
fosse construído:
1. “Reformular nossa loja online, e transfomar ela num Web App é a melhor opção, afinal, nossa
equipe de desenvolvimento web daria conta do recado, e não teríamos muito impacto, tanto de
tempo quanto de custos com a contratação de uma equipe dedicada.”
2. “Fazer um app nativo é a melhor opção. Queremos que ele explore ao máximos os recursos do
dispositivo, tendo uma performance sem igual. Por fim, vamos colocar nosso app numa store.”
3. “Nada de web, nada de nativo: vamos de híbrido! É uma forma de obter um balanceamento entre
performance, custos e tempo de desenvolvimento. Também podemos colocar o app numa store no
fim das contas.”
3. 3Tópico ZERO
Como não se trata do nosso
foco, não irei entrar em detalhes sobre
desenvolvimento de apps híbridos, mas quem se
interessar, sugiro uma busca na web por PhoneGap, um
dos mais populares frameworks quando falamos de
desenvolvimento híbrido.
No fim das contas, qual o melhor: nativo, web ou
híbrido??
Vou ser direto: depende.
Depende da sua necessidade, depende dos
seus recursos disponíveis, depende do tempo que você
tem para colocar seu produto no mercado, depende da
forma como você que colocá-lo no mercado. São muitos
fatores que tem que ser levados em conta.
Não quero iludir ninguém, dizendo que um
sempre será mais vantajoso sobre o outro. Cada situação
tem que ser estudada individualmente, e a solução mais
indicada irá surgir.
Nesse momento, vamos nos concentrar no
desenvolvimento nativo para iOS e em tudo que a Apple
e suas ferramentas de desenvolvimento têm à oferecer.
O que é preciso para desenvolver para iOS?
Antes de iniciarmos nossa pequena aventura
no mundo do iOS, vamos ver algumas definições básicas
e informações úteis que vão ajudar nosso caminho.
XCode
O XCode é a IDE (por IDE entenda Ambiente de
Desenvolvimento Integrado) de desenvolvimento
utilizada para o desenvolvimento voltado ao iOS. É
através dele que seus apps nativos serão desenvolvidos.
Não irei entrar em detalhes em funcionalidades
específicas do XCode agora: isso fica para os próximos
tópicos.
O XCode é grátis, e pode ser baixado direto na
Mac App Store.
Agora, se você se animou com o fato do XCode
ser distribuído gratuitamente pela Apple, se prepare pra
surpresinha que te aguarda no próximo requisito...
Um Mac ($$$$$$$$$)
SIM, o XCode é uma ferramenta desenvolvida
pala própria Apple, e que roda APENAS no seu sistema
operacional, o OS X.
SIM, o OS X roda APENAS num computador da
Apple.
Nesse tópico, eu vou ser politicamente correto,
e não vou citar que existem os Hackintoshes ou as VMs
como alternativa para essa limitação... OPS!!
Um (ou mais) dispositivos iOS (iPhone, iPad, etc)
Embora não seja exatamente um requisito para
desenvolver para iOS de início, ter um dispositivo iOS é
importante.
O SDK do iOS oferece o iOS Simulator, um
emulador iOS para que o desenvolvedor possa testar e
debugar sua aplicação.
No entanto, o iOS Simulator não pode ser
considerado um substituto ao dispositivo real.
Imagine uma empresa que esteja
desenvolvendo um app para iOS. Ela precisa de vários
testadores, cada qual com um dispositivo para testes, ou
seja, ficar preso ao iOS Simulator é totalmente inviável.
Outro ponto interessante, é que o iOS
Simulator não oferece os recursos necessários para
testar sua aplicação como um todo. Por exemplo, o
Simulator não suporta Push Notifications, sendo possível
“Você gastou uma fortuna
montando o PC mais potente
disponível no mercado?
LEGAL!!! Mas nele não roda o
OS X...”
Um fato interessante que vale a pena destacar, é que até a versão 4 do XCode, o Interface Builder era
uma ferramenta de design de interface gráfica à parte que vinha junto ao SDK do iOS. Foi a partir da versão 4
que o Interface Builder se tornou integrado ao XCode. Através do Interface Builder é possível “desenhar” seus
componentes visuais, sejam eles telas do seu app ou qualquer componente visual customizado (como células
de um TableView, que abordaremos futuramente).
Sim, esse é o logotipo
4. 4 Desenvolvendo apps nativos para iOS
testar esse recurso apenas no dispositivo. (Push
Notifications será abordado também em tópicos
futuros).
Uma assinatura do iOS Developer Program
Esse é mais um item que não é exatamente
obrigatório pra quem está aprendendo iOS, mas para
quem tem intenção de levar a coisa mais a sério, é algo
interessante pra ser considerado.
Para participar do iOS Developer Program, é
necessário pagar uma assinatura de 99 dólares anuais; o
que te dará acesso à algumas vantagens.
Como dito no “requisito” anterior, só é possível
exportar um app pra um dispositivo se você possuir uma
assinatura de desenvolvedor. No entanto, é importante
ter em mente que, com uma conta de desenvolvedor,
você poderá ter ATÉ 100 dispositivos registrados.
De cara pode parecer bastante, 100
dispositivos registrados; mas não é.
O “contador” de dispositivos que sua conta
suporta é apenas incremental. Ou seja, mesmo que você
deixe de usar um dispositivo, ele continua contando
como um dispositivo registrado. Só é possível remover de
fato um dispositivo da sua conta na renovação da sua
assinatura, anualmente.
Para um único desenvolvedor, atuando
sozinho, 100 dispositivos anuais podem parecer
bastante; mas não para uma corporação. A Apple possui
uma solução pra essa limitação, voltada à empresas, mas
eu tratarei esse assunto em um tópico futuro.
Outro detalhe que vale a pena comentar é que,
para que você possa publicar seu app na App Store da
Apple, você precisa fazer parte do iOS Developer
Program.
Mais detalhes sobre a App Store e o iOS
Developer Program serão discutidos em tópicos futuros.
Linguagem padrão de desenvolvimento
Pra quem vem de outras linguagens, como
Java, C#, isso pode ser algo que vai lhe causar um certo
incômodo: a linguagem de desenvolvimento.
Para desenvolver apps nativos para iOS pelas
ferramentas de desenvolvimento da Apple, há
atualmente duas opções de linguagem: Objective-C e a
nova Swift.
Alguns podem pensar “poxa, mas no Android
eu programo usando Java; tive que aprender apenas o
SDK do Android, a linguagem eu já sabia”. Certo, mas
aqui a coisa é um pouco diferente. Vai ser preciso um
pouquinho de paciência para aprender uma “nova velha
linguagem”.
Objective-C e Swift
O Objective-C é a linguagem de programação
primária tanto do OS X quanto do iOS. Construída em
cima da linguagem C e do SmallTalk, o Objective-C é uma
linguagem um tanto quanto diferente, mas que não será
um impeditivo para que possamos começar a
desenvolver nossos apps; tudo é uma questão de se
acostumar.
O Swift é a nova linguagem de programação
desenvolvida pela Apple, que, segundo ela mesma, é o
resultado de pesquisas em linguagens de programação
somado à décadas de experiência na plataforma Apple.
Apesar de estar ainda engatinhando, a quantidade de
material disponível na web sobre a linguagem vem
crescendo exponencialmente, e seu futuro é bastante
promissor, uma vez que está sendo alvo de constantes
melhorias por parte da Apple.
That’s all folks!!
É isso aí pessoal! Espero que vocês tenham
gostado dessa pequena introdução ao desenvolvimento
de apps nativos para iOS. Embora eu tenha falado pouco
das particularidades do iOS em si, é muito interessante
ter uma visão mais abrangente das práticas de
desenvolvimento mobile, independente de plataforma.
Nos próximos tópicos, começarei de fato a falar
sobre desenvolvimento para iOS de um modo prático: o
quê, como e porque fazer; iremos começar a pôr a mão
na massa e fazer nosso primeiro app.
“100 DISPOSITIVOS???? É piada
né?? Pra que tanto se eu tenho
um iPhone só?”
Pra quem ficou curioso sobre qual opção o poderoso Évelon escolheu, eu digo: ele escolheu o web app. Ninguém
conseguiu fazer ele entender o porquê de uma loja virtual precisar ter um app que rodasse off-line, sendo que
tanto seu catálogo quanto seus pedidos se concentram no seu servidor.