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ê.
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.
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.
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.