Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Índice
Aviso Legal………………………………………………………………………………3
Meus Canais……………………………………………………………………………..4
Introdução ………………………………………………………………………………5
Como utilizar este livro …………………………………………………………………7
Desenvolvimento Híbrido e Nativo para iOS……….…………………………………..8
A IDE .…………………………………………………………………………………..9
Linguagem e projeto …………………………………………………………………..13
Básico de Swift..………………………………………………………………………..18
View Controllers ………………………………………………………………………21
Segues …………………………………………………………………………………24
Camera e Fotos ………………………………………………………………………..27
Localização ……………………………………………………………………………29
Mapas …………………………………………………………………………………33
Considerações finais …………………………………………………………………..36
A produção deste livro exigiu muito trabalho e tempo de dedicação exclusiva de minha
parte. Também investi muito tempo e dinheiro para adquirir este conhecimento, que
agora busco formatar de forma que outras pessoas possam atingir o mesmo de forma
mais rápida e prática.
Este é o sentido do trabalho: Você emprega sua energia e seus recursos para produzir
algo que facilitará a vida de outras pessoas. Em troca, você será remunerado de forma
que pode utilizar este pagamento como meio de troca para usufruir das facilidades
produzidas pelo trabalho de ainda mais pessoas.
Você aprenderá a desenvolver aplicativos para iOS mais rápido se tiver a ajuda e
acompanhamento de pessoas que já passaram por esse processo antes, evitando perder
tempo com caminhos que não funcionam e focando naquilo que já foi testado e
aprovado.
Atualmente este livro está sendo distribuído de forma inteiramente gratuita, mas peço
que não altere ou extraia partes deste material para que seja distribuído de outras
formas.
Caso goste do livro, recomende que seus amigos façam o download através de nosso
website!
Possuo alguns canais na internet onde publico dicas de desenvolvimento Mobile , vídeo-
aulas e outros conteúdos para ajuda-lo nesta jornada. Acompanhe todos para receber as
novidades e ficar sabendo sobre os programas.
Blog
http://congressodemobile.com.br/blog
Canal do Youtube
https://www.youtube.com/channel/UC2KkjDLb0U9ULyhup-rQIzg
Pagina do Facebook
https://www.facebook.com/CongressodeMobile
Snapchat
https://www.snapchat.com/add/filipetb
Nem tudo foram flores em minha jornada para aprender a desenvolver aplicativos
mobile. A carência de materiais bem formatados e completos publicados no Brasil é
grande até hoje. Mesmo na internet, quando comecei, não se encontrava conteúdos em
português, sendo que mesmo hoje ainda se encontram poucos, além de que são
extremamente raros os conteúdos estarem atualizados, ainda mais agora com novas
versões do Swift, linguagem hoje utilizada para desenvolver aplicativos iOS, e com o fim
do Parse, backend as a service mais utilizado do mundo.
É com muito orgulho que publico este material como forma de deixar a minha
contribuição para os brasileiros futuros profissionais, empreendedores e professores do
mercado mobile.
Este livro foi escrito de forma que uma pessoa que não sabe absolutamente nada sobre
desenvolvimento mobile possa entender como é que ele funciona. Você poderá
aprender rapidamente o que demoraria um bom tempo “pulando de galho em galho”
por diferentes websites em inglês na internet ou através dos poucos livros disponíveis, na
sua maioria desatualizados, no mercado.
Espero que você faça bom proveito e que em breve possa me enviar o seu relato,
contando sobre o seu avanço no desenvolvimento de aplicativos para iOS!
Um grande abraço,
Filipe Torres
Você pode utilizar este livro de duas formas. A primeira é ir com calma, absorvendo
profundamente cada um dos tópicos abordados, buscando entender todas as possíveis
dúvidas. Dessa forma, é importante que você aplique o conhecimento na medida que
for aprendendo. Familiarize-se com o ambiente de programação, com o IDE Xcode e
com a linguagem Swift praticando no seu próprio computador. Em seguida aprenda os
conceitos do desenvolvimento iOS e seus componentes, é sempre importante você por
em prática cada passo aprendido, dessa maneira você fixará melhor o conteúdo, sanará
eventuais dúvidas e estará melhor preparado para desenvolver seu aplicativo.
A segunda maneira seria prosseguir mesmo que ainda não tenha dominado por
completo um assunto. Isto em um primeiro momento, pode parecer estranho, mas o
fato é que o nosso conhecimento não é construído de forma linear. A familiarização
com uma nova linguagem de programação se da com o tempo e com o contato que
temos com ela, então na medida que avançamos o conteúdo a prática com a linguagem
vai aumentando. Se você ler o livro inteiro mesmo sem absorver 100% do conteúdo, ao
começar de novo e voltar nas partes anteriores, você terá uma visão diferente do
conteúdo, compreendendo coisas que antes não havia compreendido e também tendo
novas percepções.
Você também pode utilizar este livro como um guia, caso esteja desenvolvendo um
aplicativo, ou apenas estudando, e queira realizar consultas. Os capítulos do livro
possuem materiais de consulta e que podem ser muito úteis quando você precisar
relembrar de algum procedimento necessário para solucionar a parte do seu aplicativo
que você estiver desenvolvendo.
Lembre-se que para aprender a desenvolver bons aplicativos, todo conteúdo novo é
válido. Não tenha pressa, leia com calma e fique à vontade para utilizar outros materiais
e outras fontes como complemento.
Bom, não é meu objetivo comparar os dois tipos de desenvolvimentos e sim mencionar
as duas possibilidades. Neste livro, abordaremos o desenvolvimento nativo, utilizando o
Xcode 7 como IDE, programando na linguagem de programação mais atual da Apple
no momento que escrevo este livro, o Swift 2.2.
A IDE da apple se chama Xcode, no momento em que escrevo este livro a sua ultima
versão é a 7, e ele é o ambiente de desenvolvimento da apple que nos permite
desenvolver aplicativos para iOS. O Xcode é basicamente a única ferramenta
necessária, nele você encontra um excelente Editor, Debugger, gerenciador de código
fonte, simulador, SDKs e mais. Existe também o Instruments que você pode adicionar
ao Xcode para fazer algumas coisas extras como gerenciar a performance, por exemplo,
mas não vem ao caso.
O Xcode é gratuito e você pode baixa-lo na App Store para Mac, então você precisa de
um Mac ou de uma máquina virtual com o Mac OS para desenvolver aplicativos para
iOS.
2. Aqui criamos um projeto Xcode do zero, é aqui que começamos quando vamos
desenvolver um novo aplicativo.
3. Nessa opção você pode checar se tem alguma projeto já existente em um repositório
remoto, o Xcode se integra bem com ferramentas de versionamento de software como
git, por exemplo, para trabalhar com times de desenvolvimento.
4. Essa parte mostras os projetos já existentes, caso você queira continuar algum de
onde parou.
Então aparecerão as opções para escolhermos o tipo de projeto que queremos, a menos
que você vá desenvolver um game, é comum sempre começarmos com o Single View
Application, pois é o tipo de projeto com menos coisas e a partir dele podemos criar
todos os outros, então adequamos de acordo com nossas necessidades.
Na próxima tela você deve digitar o nome do aplicativo que você está desenvolvendo,
em Organization Name é o que vai aparecer no Copyright (quem desenvolveu), você
pode por o que quiser nesse campo, entretanto, no Bundle Identifier deve ser um
identificador único, uma boa maneira de você fazer isso é colocar em notação DNS
reversa, por exemplo, br.com.congressodemobile.filipetorres. Note que coloquei o
domínio do meu site ao contrário e por fim adicionei o meu nome. Em seguida devemos
escolher a linguagem Swift e escolher se devemos criar o nosso aplicativo para iPhone e
iPad ou para somente um dos dois. Pressione Next e selecione a pasta onde você quer
salvar o projeto.
Então para finalizar este capítulo, vamos explicar a imagem de maneira bem resumida:
2. Navegador, serve para navegarmos pelo nosso projeto, é onde podemos ver os
arquivos do nosso projeto, pesquisar por eles, ver erros e avisos do compilador e
breakpoints.
4. Tela onde ficarão componentes disponíveis para arrastarmos para tela principal no
Main.storyboard e utilizarmos no nosso projeto, componentes como botões, campos de
texto, etc.
O Xcode é projetado para você desenvolver seu projeto no padrão MVC (Model, View
e Controller), porém, apesar de recomendado, não necessariamente você precisa seguir
esse padrão de projeto, então, para não complicar muito, em outra oportunidade lhe
ensinarei desenvolvimentos de projetos em Swift no padrão MVC.
Vamos então continuar com o raciocínio inicial do livro e simplificar as coisas. Vou,
antes de estudarmos a linguagem, mostrar como funciona um projeto iOS no Xcode.
Como meu objetivo não é ensinar conceitos de programação orientada a objetos e sim
fazer com que você tenha compreensão básica do desenvolvimento de aplicativos para
iOS, vamos dar continuidade.
Primeiro vamos montar nossa UI, que será apenas a tela inicial com um botão e uma
label (rótulo). Então devemos apenas encontrar os componentes e arrastar para a tela.
Segue a imagem com os passos para construir nossa UI:
Uma vez clicado no botão, o Xcode abre na janela principal dois arquivos ao mesmo
tempo, nesse caso o Main.storyboard e o ViewController.swift. Para selecionar o
arquivo que deve ser aberto na parte esquerda basta clicar no arquivo desejado no
navegador, já o arquivo da parte direito você deve clicar no arquivo desejado no
navegador segurando a tecla option.
Devemos fazer o mesmo procedimento de “linkagem” com a label, porém, com a label
o item Connection vai ser Outlet. Isso porque queremos manipular as propriedades da
nossa label, como por exemplo seu texto. A opção Action é somente para eventos, que
no nosso projeto é usado para o evento de clique do botão.
Uma vez linkado os componentes, podemos voltar para a visualização normal, clicando
em Standard Editor, botão do lado do Assistant Editor, e selecionando o arquivo
ViewController.swift no navegador.
Agora de fato vamos codificar o nosso “Hello World”. Para exibir no console podemos
usar a função print() e para exibir na label que colocamos na tela devemos acessar o
nosso outlet que criamos ao “linka-la”. Isso é feito da seguinte forma:
self.nomeDoOutletQueDefinimos.text. Segue a imagem final:
PS: Ao executar, o Xcode vai fazer a biuld do seu projeto em seguida simular seu
aplicativo no simulador, por padrão ele abre o iPhone 6s Plus, mas se seu computador
não tem muita memória eu recomendo que troque para o iPhone 5s. Essa opção está
localizada também na parte superior esquerda, porém mais próximo do centro.
A imagem acima representa o aplicativo Hello World sendo rodado no simulador após
termos clicado no botão Say Hello!, observe que o texto da label foi alterado para
Hello World.
PS: A posição do botão e da label foi alterado para o topo da tela para que a imagem
capturada do simulador ficasse menor.
Neste capítulo eu quero lhe apresentar a sintaxe da linguagem Swift com o objetivo que
você adquirira a base e com o tempo ir se familiarizando.
A sintaxe do Swift, de maneira geral, é bem simples. Para lhe apresentar a sintaxe eu
vou utilizar um projeto do playground, também sugiro que o utilize e pratique bastante.
Variáveis e Constantes
Existem duas formas de se declarar variáveis e constantes, a explícita e a implícita.
Ates de demonstrar cada uma preciso dizer que variáveis são seguidas por var quando
declaradas, já constantes por let.
A linguagem nos dispões também de várias operações que podemos realizar com
Arrays, como por exemplo .append(), insert(), removeLast(), que serve para adicionar
um elemento ao final do array, inserir um elemento na posição desejada e remover o
ultimo elemento do array, respectivamente. Existem várias outras operações, você pode
dar uma olhada na documentação da apple, pelo próprio Xcode, para mais detalhes.
Dicionários e Tuplas
Um dicionário armazena uma coleção não ordenada de valores. Cada valor no
dicionário está associado a uma chave. Em outras palavras, um dicionário armazena um
número de pares chave/valor.
Para concatenarmos valores a uma String, basta usarmos o operador +, por exemplo:
var livro = "Desvendando " + tupla.1 teria como resultado “Desvendando iOS”.
É recomendado que usemos interpolação na maior parte das vezes, pois podemos
interpolar várias vezes e diferentes tipos de dados na mesma String. Fazemos isso através
do operador \(), por exemplo: var escrevendo = "Desvendando \(tupla.1) em \
(dict[“dia"]!) de \(mes)” teria como resultado “Desvendando iOS em 2 de Junho”.
Já a estrutura de repetição for era igual ao C(for(int i = 0; i< 10, i++)), porém com
atualizações da linguagem, a estrutura se encontra deprecada na versão 2.2 e será
removida na versão 3 do Swift. Um for em Swift agora deve ser feito da seguinte
maneira: for i in 0…9 { }.
O while ainda é o mesmo do C e Java, com a mesma diferença do if, não necessário
por parênteses: while altura < 1.9 { altura += 0.1 }.
Classes e Structs
No Swift temos estruturas do tipo class e struct, elas funcionam como qualquer classe
de linguagens orientadas a objetos. Basicamente a principal diferença entre as duas
estruturas é que structs são passadas por valor enquanto classes são passadas por
referência. Isso quer dizer que se eu atribuir uma instancia de classe a uma segunda
classe, a mesma é passada por referencia, então todas as alterações que eu fizer na
segunda classe também ocorrerão na primeira, enquanto com structs não, as alterações
afetariam somente a segunda.
Logo no inicio desse livro criamos um projeto básico que já iniciava com uma View
Controller e aprendemos que para cada view(tela) existe um arquivo .swift com uma
classe que a controla / gerencia.
Table Views são componentes bem complexos e requer muito conteúdo para explica-
los. Para não deixar o livro muito extenso, não abordarei sobre Table View’s aqui.
Então caso queira saber mais como trabalhar com Table Views eu sugiro que se
inscreva no meu canal do youtube (http://bit.ly/ytbookios), pois postarei aulas em
video no canal sobre esse componente e mais.
Existem 3 maneiras de combinar View Controllers, fazemos isso através de Tab Bar
View Controller, Split View Controller e Navigation View Controller.
Note que podemos navegar entre duas ou mais telas, no exemplo, ao clicarmos no botão
Hello, vamos para a tela seguinte e automaticamente aparece o botão Voltar para a tela
anterior.
Criarei video aulas no meu canal do youtube sobre os 3 componentes responsáveis por
combinar View Controllers(TabBar, Navigation e Split), então se inscreva agora no meu
canal do youtube: http://bit.ly/ytbookios.
Tipos de Segues:
Show Segue, são chamadas em Navigation Controllers, também usamos quando
queremos apenas fazer uma transição de uma view para outra, sem combina-las.
Show Detail Segue, são usadas em Split Views, quando você tem algo na master e
quer mostrar mais informações no detail, é essa a segue usada, daí o nome dela. Esse
tipo de Segue também funciona no Navigation Controller.
Modal Segue, basicamente joga uma tela, que ocupa todo o campo visual, em cima da
atual.
Popover Segue, parecido com o Modal Segue, com a diferença que a tela que é
jogada em cima não ocupa todo o campo visual, somente uma parte da tela e você pode
clicar fora dela para fecha-la.
As Segues mais usadas são geralmente Show e Show Detail, já a Modal não é tão
comum, uma vez que essa transição não é adequada em muitos casos. Popover tem um
visual melhor em iPad’s e iPhone’s Plus, uma vez que são aparelhos de telas maiores,
mas com um pouco de configuração você consegue o mesmo efeito em aparelhos
menores.
Para fazer uma uma Segue é bem fácil, na sua storyboard basta segurar a tecla control,
clicar no botão ou componente que você deseja que realize a transição e arrastar para a
tela para qual ele deve realizar a transição.
Na imagem a baixo temos uma Split View Controller, onde a View da calculadora é a
Master e o gráfico a Detail. Estamos criando uma Segue do botão da calculadora para a
tela do gráfico.
Ta, mas onde usaremos esses Identifiers no nosso código? É isso que falaremos a seguir,
abordando alguns métodos e eventos que os utilizam:
Tanto a câmera quanto a biblioteca de fotos são acessadas através da classe chamada
UIImagePickerController, que nada mais é do que uma UIViewController. É bem
simples de usar, você precisa apenas configurar e mostra-la na tela de forma modal.
Também é recomendado checar as mídias disponíveis (foto e/ou vídeo), fazemos isso
através do método estático .availableMediaTypesForSourceType(sourceType) ->
[String]? da classe UIImagePickerController. Isso nos permite distiguir uma câmera que
pode gravar vídeo de uma que que pode somente tirar fotos, por exemplo. Isso é
Na imagem acima, capturamos o evento de tap do botão (da mesma forma que fizemos
no inicio desse livro no projeto inicial “Hello World”) com o método importImages.
Localizações no iOS são definidas através do Core Location. Vamos então aborda-lo a
seguir.
O CLLocation pode utilizar do GPS, Wifi e sinal de torres de celular para determinar
sua localização e a precisão das propriedades desse objeto podem e devem ser definidas,
uma vez que quanto maior a precisão, maior o consumo da bateria do seu
celular ou tablet, então você deve escolher a precisão de acordo com o objetivo do seu
aplicativo com objetivo de economizar ao máximo a bateria do aparelho onde ele vai
rodar.
Para isso funcionar, você precisa adicionar duas entradas na Info.plist, são elas:
NSLocationWhenInUseUsageDescription e NSLocationAlwaysUsageDescription.
Basta você clicar com o botão direito em algum espaço vazio da Info.plist e apertar em
Add Row (adicionar linha) para inserir uma entrada.
Sempre trabalhe com a configuração mínima necessária para que seu aplicativo
funcione bem.
Existem ainda uma terceira forma de monitorar mudanças de localização que é por
regiões, através dos métodos:
startMonitoringForRegion(CLRegion)
stopMonitoringForRegion(CLRegion)
Nesse caso o método do delegate que captura os eventos de atualização muda, seguem:
func locationManager(CLLocationManager, didEnterRegion: CLRegion)
func locationManager(CLLocationManager, didExitRegion: CLRegion)
No iOS 9 foi criada a possibilidade de você requisitar a sua localização atual apenas
uma vez ao invés de ficar monitorando atualizações e isso é feito através do método:
requestLocation()
Nesse caso você só precisa definir o desiredAccuracy, chamar o método e capturar a
localização no método do delegate (o mesmo método do startUpdatingLocation e do
startMonitoringSignificantLocationChanges).
Nota: Essa ultima forma só funciona no iOS 9.0 e posteriores. Você pode identificar se
seu aplicativo está rodando no iOS 9 ou posterior da seguinte forma:
if #available(iOS 9.0, * ) {}
MapKit é um framework que fica com com a parte de interface do usuário (UI) e
basicamente o que ele faz é mostrar um mapa. A classe responsável por gerenciar e
mostrar o mapa é a MKMapView (Arraste o componente pra storyboard e em seguida
“linke” com o ViewController através de um IBOutlet, como já fizemos anteriormente
com a label do projeto “Hello World”)
Annotations podem ter callouts. Por padrão callouts mostram somente o título e o sub-
título, porém também podem ter os chamados Accessory Views. Os callouts aparecem
quando o AnnotationView é pressionado.
Há muito ainda do que se pode fazer com mapas, várias outras propriedades, métodos e
eventos do delegate. Para não deixar o livro muito extenso para essa primeira versão,
abordarei mais sobre mapas no meu canal do youtube. Então caso queira saber mais
como trabalhar com o framework MapKit eu sugiro que se inscreva no meu canal do
youtube (http://bit.ly/ytbookios), pois postarei aulas em video no canal sobre esse
framework e mais.
Se você aprender todos os pontos abordados no livro e tiver um pouco mais de estudo
extra, certamente poderá desenvolver aplicativos profissionais.
Talvez você tenha chegado até aqui sem ter absorvido todos os pontos. Não tem
problema, na verdade, isso é o esperado. Você deve estudar com calma, sem ansiedade,
colocando em prática cada ponto abordado. Se você apenas leu todas estas explicações,
ao precisar trabalhar com algum desses pontos, com certeza lembrará que já estudou
isso e então poderá revisar para então aprender de forma profunda.
A minha sugestão é que você estude com calma, porém com um certa frequência, por
exemplo, estudar algum assunto de desenvolvimento iOS uma vez por dia. Busque
conteúdos complementares em livros, websites, videos e também se inscreva no meu
canal do youtube (http://bit.ly/ytbookios), pois lá postarei aulas sempre atualizadas e
em videos sobre desenvolvimento iOS.
Muito obrigado pela sua leitura e espero que você realmente esteja disposto a dar o
próximo passo em seu aprendizado.
Filipe Torres
CongressodeMobile.com.br