Primeiras aulas do curso iOS parte 1: Web Services e Sincronização Offline

iOS parte 1: Web Services e Sincronização Offline

Salvando informações no servidor - Introdução

Olá, pessoal, meu nome é Ândriu, bem-vindos ao curso de IOS, Sincronização Web Service Parte 1. Daremos continuidade a um projeto que já desenvolvemos nos cursos de IOS recursos nativos 1 e 2.

É o projeto da agenda, nesse projeto conseguimos cadastrar vários alunos, editar suas informações, listar todos os alunos e também deletá-los. Tudo isso de forma local, porque já havíamos implementado nos cursos passados, utilizando o core data.

Nesse curso nós vamos abordar outro problema que pode acontecer, por exemplo, salvando todos os alunos local no meu iPhone, o que acontece se eu apagar o aplicativo do iPhone?

Eu faço no unipress clico no “xizinho” e deleto. Eu acabo de perder todos os cadastros que já havia feito, para corrigir esse problema. nesse curso, nós vamos entender como é que funcionam as requisições http.

Ou seja, vamos salvar todos os alunos tanto local, quanto no servidor. Criaremos uma cópia, um backup desses alunos no servidor, assim podemos apagar o app do simulador ou caso ocorra algum problema com o seu aparelho, toda vez que você precisar dessas informações é só você fazer uma requisição e o servidor vai devolver todos esses alunos.

Além disso, vamos aprender a trabalhar com o Alamofire para fazer essas edições - é uma biblioteca para swift para otimizar esse processos de requisições HTTP.

Vamos instalar o CocoaPods como gerenciador de dependências e também aprender a utilizar as requisições e vários métodos, como o get, o put e o delete.

Tudo isso para evitarmos a perda dos nossos alunos e para finalizar vamos entender como é que faz a parte de sincronização. Ou seja, caso eu faça alguns cadastros no meu iPhone e eu não tenha conexão com o servidor, seja por falta de 3G, seja por falta de internet ou algum problema com o serviço de telefonia internet - não podemos parar de usar o nosso aplicativo.

Aliás, não podemos perder esses alunos, por isso vamos ver como é que sincronizamos esses alunos off-line e depois online quando for restabelecida a conexão com servidor.

No final do projeto, na última aula, faremos algumas refatorações para melhorar a qualidade do nosso código e separar algumas responsabilidades. Eu espero que você goste do curso e até mais.

Salvando informações no servidor - Servidor

Olá, pessoal, nessa aula vamos dar continuidade ao projeto que já desenvolvemos nos cursos de IOS recursos nativos 1 e 2. O projeto é agenda. Nessa agenda podemos cadastrar vários alunos e quando clicamos em cima de um deles conseguimos visualizar suas informações.

Então, por exemplo, conseguimos ver o nome da Adriana, o endereço, telefone, o site, a nota e todas essas informações já utilizamos para implementar várias features, como por exemplo, o envio de sms, consegue localizar o aluno no mapa, consegue fazer ligação telefônica e várias outras features.

O importante é que a estamos salvando esses alunos local, no nosso aplicativo. O que eu quero dizer com isso? Se eu rodar o aplicativo novamente no Xcode, não perdemos esses alunos.

Então vou rodar novamente o app e você vai ver que os alunos continuam lá. Isso implementamos por meio do core data toda essa persistência, porém, o que acontece se eu apagar o app do simulador?

Estou usando o meu aplicativo e o apago do simulador, ou pior se eu faço vários cadastros no meu iPhone e por acaso eu perco o meu iPhone. O que acontece? Nós vamos fazer um teste.

Então, vou pausar aqui o meu aplicativo e vou apagar o app do simulador e clicar e segurar e clicar aqui no X. Clico em deletar, beleza, apaguei o app do simulador, agora vamos rodar o app de novo para ver o que aconteceu.

Perdemos todos os alunos que havíamos cadastrado. Caso eu apague o app do simulador, do meu próprio iPhone ou eu perca meu iPhone o que acontece é isto: é perda total dos dados cadastrados.

Assim, nessa sala, vamos começar a resolver isso verificando outra forma de salvar os alunos. Vamos continuar salvando o aluno no local, porém vamos criar um backup desses alunos em outro local. Esse outro local vai ser um servidor que vamos subir na nossa máquina.

Vamos trabalhar com requisições http para salvar esses alunos no servidor. Vamos continuar salvando o aluno no local e ter uma cópia dele também no servidor.

Para começar a fazer isso precisamos entender como funciona o servidor. Na minha área de trabalho eu tenho essa pasta “server” - deixa só fechar aqui o simulador, dar um quit.

Na área de trabalho eu tenho essa pasta Server que vai estar disponível para vocês fazerem download na parte de exercícios do curso. Com a pasta na minha área de trabalho eu vou abrir o terminal para subirmos o servidor.

então eu vou apertar aqui a tecla command e espaço e eu vou digitar terminal. Eu vou dar um zoom apertando a tecla command +, só para vocês conseguirem visualizar.

Estou com o terminal aberto, o primeiro passo eu preciso entrar na pasta do servidor. Como é que eu faço isso? Eu vou apertar a tecla (digitar) CD, vou dar um espaço e vou clicar e arrastar para o terminal. Assim conseguimos pegar facilmente o caminho da pasta.

Eu vou dar um enter. Vamos ver o que tem dentro dessa pasta? Para verificar o que tem dentro dessa pasta eu vou apertar (digitar) a tecla LS, ele lista todos os arquivos dentro desse diretório.

Tem o arquivo Database e essa aplicação server.jar - ela que temos de executar na nossa máquina para subir o servidor. Um ponto importante é que trabalhamos aqui com a mesma versão do Java, nesse Mac estou utilizando a versão 8.

Para você não ter nenhum problema no andamento do curso, caso você esteja utilizando uma versão posterior do Java eu vou pedir para que você utilize a mesma versão que é a versão 8. Como é que eu faço para ver qual é a versão do Java?

Basta você vir em configurações e depois você vai clicar no ícone do Java – embaixo, depois que você clicar aqui e ele vai abrir um assistente para você verificar todas as informações do Java.

Logo aqui tem sobre (about) se eu clicar aqui “sobre” ele vai abrir esse pop over e mostrar que PE a versão 8. Então eu estou utilizando a versão 8 do Java. é legal estarmos utilizado a mesma versão para que não ocorra nenhum problema.

Como é que eu subo no servidor na minha máquina pessoal? Eu vou digitar o comando Java tracinho jar (-jar) e o nome do arquivo. Qual é o nome do arquivo? é esse “server.jar”.

É esse arquivo que vamos digitar “server.jar”, vou dar enter e aguardar alguns instantes para ele subir essa aplicação na nossa máquina. Depois que ele subiu o servidor na nossa máquina, ele informa qual é a porta que ele subiu. Na verdade ele subiu aqui o servidor na porta 8080.

Para acessar essa aplicação eu vou abrir aqui um navegador e vou digitar o seguinte: localhost:8080 (porque subi o servidor na nossa máquina local e a porta 8080) depois disso eu vou dar um enter.

Agora temos acesso a essa aplicação, conseguimos fazer as mesmas coisas que já fazíamos no nosso app. Se eu clicar aqui em cadastro de aluno, por exemplo, eu consigo cadastrar um aluno com as mesmas informações que já temos no aplicativo.

Eu vou fazer um cadastro aqui rapidinho para ver. Vou pôr uma nota, aqui eu coloco qualquer endereço, telefone e um site. depois disso eu vou clicar em cadastrar. Cadastrei um aluno, repara que agora ele está listando os alunos que eu cadastrei.

Então essa é a aplicação que utilizaremos para criar um backup, só que não vamos fazer isso manualmente - não faz sentido criar um cadastro nosso e depois vir nessa aplicação e digitar tudo de novo, nessa plataforma.

Não é isso que vamos fazer, o que faremos é integrar esse servidor com o nosso aplicativo. Quando você clica no botãozinho salvar do app, vai mandar essas informações para esse servidor.

Assim não precisa preencher duas vezes o formulário, senão teríamos de preencher no app e depois preencher de novo nessa aplicação web. Dessa forma, como vamos trabalhar com requisições de HTTP, vamos preencher as informações do aluno no nosso aplicativo, clicar em salvar e ele automaticamente vai salvar o nosso app.

Como já está fazendo e também salvar isso no servidor. Então conseguimos sempre ter um backup das informações. A seguir vamos começar a fazer isso.

Salvando informações no servidor - Trabalhando com dependências no projeto

Agora que já entendemos outra forma de salvar esses alunos além do app, no local no iPhone, é hora de relembrarmos como funciona uma requisição http. Nós já implementamos isso no curso de IOS Recursos Nativos 1, quando precisamos calcular a média geral dos alunos. Vamos lembrar como é que fizemos?

No Xcode tem a classe CalculaMediaAPI. Vamos entrar aqui. Basicamente temos algumas informações importantes que vamos precisar para montar a requisição.

O primeiro passo é entender para onde vamos mandar esses alunos, no caso precisávamos calcular média e precisávamos de um local, endereço onde mandar esses alunos, para o servidor da caelum.

O endereço é “www.caelum.com.br/mobile” depois disso montamos os parâmetros. Ou seja, a lista de alunos para o servidor - para mandar para o servidor, e depois precisamos entender qual era o método da requisição, como estávamos enviando essas informações ao servidor, usamos o post.

E é isso que vamos precisar novamente para salvar esses alunos nesse servidor local, que subimos na nossa máquina. Vamos dar uma olhada nas informações que precisamos.

Eu tenho aqui uma imagem do postman que mostra exatamente essas três características básicas para fazer essa requisição. Tem o endereço que vamos atualizar, no nosso caso como o servidor está local localhost 8080/api/aluno/lista. Esse é o endereço que vamos utilizar.

Depois tem um método ou o verbo da requisição, no caso é put, porque também pode atualizar o aluno através dessa rota, então pode também cadastrar ou atualizar. E por último há os parâmetros que precisamos enviar para o servidor.

Tem id, nome, endereço, telefone, site, nota, todas as informações que tem no formulário. Repara que é uma array de dicionário, então posso enviar vários alunos de uma vez.

Tendo essas três informações é hora de começar a implementar. A forma que fizemos para calcular a média deu um pouco de trabalho, porque não utilizamos nenhuma biblioteca, fizemos tudo utilizando a classe URLrequest; fizemos vários tratamentos.

Nessa parte do curso vamos utilizar uma biblioteca bem famosa, que é Alamofire, vamos utilizar essa biblioteca para automatizar as requisições que faremos. Vamos dar uma olhada como é que funciona. Então eu vou abrir o Google e digitar Alamofire, essa biblioteca. Eu vou dar um enter, vou entrar nesse primeiro link onde mostra a documentação da biblioteca.

Há várias informações importantes, tem um índice que mostra features, o que precisa para instalar e tudo mais, o importante agora é vermos como é que instalaremos essa biblioteca.

Podemos instalar isso de forma manual, que não é tão legal porque caso ocorra atualização na biblioteca tem de ficar desinstalando e instalando novamente; ou podemos utilizar um gerenciador de dependências no nosso projeto.

Gerenciador de dependências é um facilitador que instalamos no projeto e que consegue instalar rapidamente bibliotecas de terceiros, ou seja, implementações que outras pessoas já fizeram e conseguimos utilizar no nosso projeto para automatizar o processo de desenvolvimento. Que é o que faremos agora instalando o Alamofire.

Um dos gerenciadores mais famosos é o CocoaPods e vamos utilizá-lo no nosso projeto para instalar o Alamofire. Primeiro precisamos instalar o gerenciador de dependências e depois voltamos e instalamos essa biblioteca.

Para começar, vamos rodar alguns comandos no terminal para instalar esse gerenciador. Eu vou fechar aqui Xcode e abrir o terminal - deixa-me fechar o simulador. E vou abrir aqui o terminal: command espaço para abrir o spotlight e vou digitar “terminal”.

Com o terminal aberto já podemos começar a digitar os comandos para instalarmos o gerenciador de dependências no nosso projeto. Precisamos entrar na pasta do projeto. Como é que eu entro na pasta do projeto? Vou digitar o comando “cd”, vou dar um espaço e arrastar a pasta do projeto para o terminal.

Assim, conseguimos copiar o diretório rapidamente. Depois que estamos na pasta do projeto, precisa instalar o CocoaPods. Então eu vou digitar “sudo gem install cocoapods”, depois que eu digitei esse comando eu aperto o enter. Como estamos utilizando comando sudo, de administrador, precisamos digitar a senha do Mac. Então eu vou digitar aqui a senha do meu Mac.

Vou dar enter novamente. Ele vai demorar alguns instantes. Bacana. Agora que ele terminou de instalar, precisamos rodar o próximo comando que é para ele gerar o arquivo pod file é o arquivo vai colocar a dependências do nosso projeto. Então eu vou digitar que o comando “pod init”, depois que eu digitei vou apertar o enter.

Agora que ele terminou a instalação, vamos entrar na pasta do projeto para verificarmos as modificações. Vou dar dois cliques aqui na agenda, repara que ele gerou realmente uma nova workspace. A partir de agora vamos abrir o aplicativo através de ícone, para conseguirmos acessar todas as bibliotecas que formos utilizar no CocoaPods.

Vou dar dois cliques, vai abrir o projeto e aqui tem uma divisão específica para o CocoaPods, vou abrir aqui essa parte e ele tem o arquivo podfile. Esse arquivo é onde vamos centralizar as bibliotecas que formos utilizar no nosso aplicativo.

Vamos colocá-la aqui dentro. Como vamos instalar o Alamofire, vamos voltar lá na documentação e copiar essa linha: “pod ‘Alamofire’, ‘~> 4.6’” para instalar o CocoaPods. Até fala aqui target o nome do seu aplicativo e dentro dele colocamos a biblioteca que queremos instalar.

Vou voltar para cá, vou colar o Alamofire. Depois de copiarmos e colarmos essa linha, já está instalado o Alamofire? Ainda não. Toda vez que incluímos uma nova biblioteca, precisamos rodar um comandinho no terminal para ele efetivamente instalar.

É o que vamos fazer agora. Então, vou minimizar aqui novamente Xcode, vou abrir o terminal, na verdade já estou na pasta do projeto. Vou digitar o comando “pod install” novamente.

Esse comando vai instalar todas as bibliotecas que colocarmos no arquivo podfile. Repara que ele está instalando o Alamofire e a versão. Agora que ele instalou, já há uma biblioteca no nosso projeto que vamos utilizar para fazer as requisições http. Então, o próximo passo é efetivamente começar a criar essa requisição.

Sobre o curso iOS parte 1: Web Services e Sincronização Offline

O curso iOS parte 1: Web Services e Sincronização Offline possui 158 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de iOS em Mobile, ou leia nossos artigos de Mobile.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda iOS acessando integralmente esse e outros cursos, comece hoje!

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana