Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais
Alura > Cursos de Mobile > Cursos de iOS > Conteúdos de iOS > Primeiras aulas do curso iOS: usando recursos nativos

iOS: usando recursos nativos

Conhecendo o projeto - Apresentação

Boas-vindas. Eu sou o Ândriu, instrutor desse curso, onde nós vamos falar sobre frameworks nativos para iOS que são muito utilizados no mercado.

E nós vamos utilizar como base esse aplicativo Alura Ponto, onde nós podemos registrar o ponto de trabalho, ou seja, o horário em que o funcionário começa a trabalhar, o horário em que ele vai almoçar, volta do almoço e quando ele termina o expediente.

A ideia é iniciar explorando a câmera. Então a ideia desse aplicativo é tirarmos uma selfie e depois utilizarmos essa foto e registrarmos um recibo de ponto, que é o que nós temos na segunda aba do aplicativo.

Também vamos aprender a utilizar as fotos da biblioteca para inserir no nosso perfil. E depois nós vamos explorar o Core Data como framework para persistência de informações no nosso device.

Então nós temos um problema: quando nós fechamos o aplicativo perdemos todos os recibos que nós temos, e a ideia é utilizarmos o Core Data para salvar esses dados local no nosso device.

Então vamos aprender a salvar. Se fecharmos o aplicativo e abrirmos de novo, nós temos todos os recibos. Vamos também aprender a listar os objetos, que é exatamente essa lista com todos os recibos. E também vamos aprender a deletar esses recibos, tudo utilizando frameworks nativos, no caso o Core Data.

Então vamos criar uma camada DAO no nosso aplicativo, com todos esses métodos para salvar, deletar, listar. Falaremos também sobre a atualização desses recibos, e tudo de forma nativa e na prática.

Esse é o conteúdo que veremos durante esse curso. Eu espero você.

Conhecendo o projeto - Conhecendo o projeto

Estamos iniciando mais um curso na Alura. Agora falaremos sobre alguns frameworks nativos do iOS, que são muito utilizados, por exemplo, a câmera, como utilizamos a funcionalidade da câmera no nosso aplicativo, como acessamos a biblioteca de imagens para ter acesso às fotos que tiramos e utilizá-las no app.

Outro assunto muito importante é como nós podemos persistir dados nosso app para que quando fechemos nós não percamos esses dados. É isso que vamos aprender.

Vamos utilizar como base o aplicativo Alura Ponto, que eu vou mostrar para você. É um aplicativo que marca a batida de ponto dos funcionários.

Então você pode registrar quando você começa a trabalhar, quando você vai almoçar, quando volta do almoço, no final do seu expediente. Então conseguimos registrar essas horas para ter um controle de quantas horas o funcionário está trabalhando.

Vamos utilizar esse app Alura Ponto, que tem essas funcionalidades que eu comentei, por exemplo, o uso da câmera para registrar o ponto. Se eu clico em “Registrar” eu tenho acesso à câmera. Então posso tirar uma foto e registrar o ponto, quando eu aceito a foto que eu tirei.

Tem a tela de recibos, onde eu consigo visualizar todas as batidas de ponto que eu fiz. Repare que eu acabei de incluir uma batida de ponto. Eu posso voltar ao início e registrar mais um ponto. Agora na tela de recibos eu tenho duas batidas. Então é um app de controle de horas do funcionário.

Existe também a possibilidade de adicionar alguma foto da biblioteca, o que também vamos entender como fazer.

E também trabalharemos com a persistência das nossas informações. Assim que eu fechar o app eu ainda tenho essas informações persistidas no meu device, de forma local, utilizando o Core Data. Então aprenderemos a fazer um CRUD dessas informações, localmente, utilizando o Core Data.

Esse basicamente é o app com o qual nós vamos trabalhar. Já temos algumas classes prontas para ganharmos tempo.

Tenho a seção, onde eu guardo momentaneamente os recibos dos pontos na memória. Nesse momento, se eu fechar o app e abrir de novo eu ainda não persisti, e nós trabalharemos nisso.

Tenho também a classe de recibo, eu tenho uma classe de formato data e hora, tenho o controle da home, que é a tela principal, onde temos a possibilidade de registrar o ponto e o horário. E tenho também a tela de recibos, onde temos uma tableview que lista os recibos e um botão onde eu posso então acessar a biblioteca de fotos e adicionar uma foto de perfil.

Temos algumas classes prontas, mas ainda teremos bastante trabalho pela frente para conseguir entender e também utilizar esses frameworks da melhor maneira possível.

Utilizando a câmera - Câmera do iOS

Começaremos explorando a funcionalidade da câmera no nosso aplicativo. A ideia é utilizarmos o iPhone físico para testar essa funcionalidade.

Infelizmente no simulador nós não conseguimos testar todos os recursos disponíveis no iOS, e a câmera é um deles. Por isso eu estou com meu iPhone e vamos testar assim que implementarmos essa funcionalidade.

Primeiramente eu tenho aqui esse botão “registrarButton”. Eu vou começar buildando o app, pode ser no simulador mesmo, porque ainda não implementamos. Mas a ideia é implementarmos a partir desse clique a chamada para essa funcionalidade da câmera.

Só que antes precisamos visualizar e verificar se existe esse recurso. Quando eu clicar em “Registrar Ponto” esse método registrarButton é disparado.

Eu vou começar verificando se é possível abrir a câmera, ou seja, se eu estou com o device físico mesmo. Então vou fazer um if UIImagePickerController, que é a classe que nos dá acesso às funcionalidades da câmera e da biblioteca.

Eu tenho esse método isSourceTypeAvailable(.camera), e eu posso passar um dos tipos que eu quero verificar. Eu quero verificar se a câmera está disponível. Se estiver, vamos implementar alguma coisa para chamar a câmera.

Começaremos criando uma classe chamada "câmera" para não deixarmos essas funcionalidades todas amontoadas no View Controller .

É uma boa prática você sempre distinguir quais são as responsabilidades de cada classe e tentar extrair isso sempre que possível para não deixar o View Controller com muita responsabilidade.

Então eu vou criar uma nova classe. Sobre a pasta “Model” clico com o botão direito e escolho “Novo Arquivo”. Seleciono “Swift File” e dou um “Next”. Vou chamar de “Camera”.

Neste arquivo, vou criar minha classe: class Camera: NSObject. E vou implementar alguns métodos. O primeiro método que eu vou implementar será um método para abrir câmera func abrirCamera.

Eu vou precisar receber por parâmetro o View Controller, porque ele tem acesso ao método present, onde de fato conseguimos abrir o UIImagePickerController, que é o Controller da câmera.

Então vou pedir no parâmetro um Controller, func abrirCamera(_ controller: UIViewController, _ imagePickerController, que é a classe responsável por gerenciar a câmera e a biblioteca de imagens.

No fim das contas o que eu vou fazer é controller.present(imagePicker, animate: true, completion: nil) para exibir na tela. No fim das contas é isso que faremos.

Só que antes disso precisamos configurar algumas coisas como, por exemplo, se é possível editar a foto ou não, qual câmera eu quero abrir, se é a frontal ou a traseira. Então temos algumas configurações.

A imagePickerController tem um método chamado allowsEditing = true, que é permitir edição da foto. E vou passar como verdadeiro.

Eu tenho também o tipo que eu quero exibir nesse imagePickerController, se é a câmera ou a biblioteca, então também preciso configurar. Eu vou passar imagePicker.sourceType = .camera.

Por enquanto está bom só para testarmos. Depois faremos mais algumas configurações.

Voltando no “HomeView Controller”, eu vou criar um novo método chamado func tentaAbrirCamera(). E dentro do botão eu chamo esse método.

Eu vou criar uma variável private e eu vou colocar a keyword lazy, e vou instanciar: private lazy var camera = Camera.

O lazy é uma variável preguiçosa. Isso quer dizer que ela só será instanciada de verdade quando ela for chamada, quando ela for requisitada em algum ponto do nosso código. Caso contrário, ela não é inicializada. Por isso é uma variável lazy, preguiçosa. Isso ajuda no gerenciamento de memória.

E eu vou criar também um private lazy var controladorDeImagem = UIImagePickerController. Tenho essas duas variáveis que vamos utilizar.

No tentaAbrirCamera eu vou chamar a camera.abrirCamera e vou passar um controller, que é o próprio “HomeViewController”. Então vou passar ele mesmo e o próprio controlador de imagem, camera.abrirCamera(self, controladorDeImagem).

Agora vamos rodar o aplicativo, eu vou rodar no meu iPhone, e vamos verificar se precisamos fazer mais alguma configuração ou se só isso já basta para que consigamos então abrir a câmera.

Já buildei o app no meu iPhone, vamos clicar em “Registrar Ponto”. E nós temos um crash. Vamos ver o que aconteceu. Ele está falando que ele precisa de acesso para o uso da câmera. Então vamos utilizar o arquivo “info.plist” para pedir acesso ao usuário.

Este é um ponto muito importante, porque muitos recursos que o iOS tem, como câmera, mapa, push notification, várias coisas precisam da autorização do usuário para conseguir utilizar, por questão de segurança. E a câmera é um deles.

Então como é que eu faço para pedir essa autorização para o usuário? Eu tenho um arquivo chamado “info.plist”, onde nós temos algumas configurações. Eu preciso adicionar uma nova configuração para pedir essa informação.

Vou clicar no sinal de mais ao lado de “Information Property List”, e eu tenho exatamente a configuração que precisamos colocar. Então eu vou chamar o Privacy, e eu tenho vários métodos que permitem utilizarmos esses recursos. Tem a câmera, contato, calendário, Bluetooth, enfim, várias permissões que podemos utilizar.

Eu vou utilizar a “Privacy – Camera Usage Description”, então seleciono e preciso colocar um valor para ela. O valor na verdade é a mensagem que queremos colocar.

Qual é a mensagem que eu quero colocar para o usuário para ele entender que eu preciso utilizar aquele recurso? Eu vou colocar “Alura Ponto necessita de acesso à câmera para registrar o ponto eletrônico”.

Então configuramos através do arquivo “info.plist”. Agora eu vou rodar mais uma vez o aplicativo para testarmos.

Vou abrir o aplicativo mais uma vez. Cliquei em “Registrar Ponto” e agora sim ele traz essa janela alert falando que o Alura Ponto gostaria de acessar a câmera e tem a mensagem que colocamos.

Vou clicar em "Ok" para conseguirmos acesso à câmera. Repara que ele abriu diretamente a câmera frontal, então essa é uma configuração que podemos melhorar.

Eu vou tirar uma foto e clicar em “Use Photo”. Mas, por enquanto, não configuramos nada para recebermos a foto que tiramos. Então esse é um ponto de melhoria que veremos a seguir.

Sobre o curso iOS: usando recursos nativos

O curso iOS: usando recursos nativos possui 102 minutos de vídeos, em um total de 34 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!

Conheça os Planos para Empresas