Persistência de dados com CloudKit
Medium produzido em conjunto por Pedro Farina e Pedro Guedes.
Quando pensamos em desenvolvimento mobile, o que queremos é encontrar a forma mais simples e eficiente possível de entregar uma aplicação que gere valor para o usuário. Os mínimos detalhes, que muitas vezes passam despercebidos, são aqueles que, no final, podem contribuir para uma experiência mais satisfatória.
Uma das decisões que, nós desenvolvedores, necessitamos tomar é qual a maneira que nos iremos promover a persistência de dados. Este Medium tem como objetivo explicar o porquê do CloudKit ser uma excelente opção e como começar a usar ele.
Introdução
Introduzido em em 2014, o CloudKit é um serviço de hospedagem de servidor oferecido para desenvolvedores, pela Apple, para que seu app tenha integração direta com o iCloud.
O CloudKit é dividido em zonas, em que cada zona contém uma database pública geral e uma compartilhada e privada para cada usuário.
- A database pública é de comum acesso a todos usuários e é custeada pelos desenvolvedores;
- A database privada é acessada exclusivamente pelo usuário e seu armazenamento é feito diretamente no iCloud pessoal.
As principais funções que o CloudKit pode oferecer até hoje são:
- Armazenamento de dados;
- Notificações remotas.
Porque CloudKit?
Bom, agora a pergunta que não quer calar, porque usar CloudKit? Aqui vão alguns motivos que poderiam te convencer:
- Facilidade de implementação
Ao contrário de algumas soluções de persistência de dados encontradas no mercado, o CloudKit requer pouca configuração, sendo que não existe a necessidade de, por exemplo, configurar ou instalar servidores. Para se qualificar a usar o CloudKit, você precisa apenas de um registro no IOS Developer Program, sem ter que fazer novas contas ou usar serviços adicionais. Quando ativos os recursos do CloudKit no app, todo o servidor já está configurado. Não é necessário baixar bibliotecas, apenas um import CloudKit, como nas outras frameworks do Swift.
- Segurança de dados
Quando utilizamos o CloudKit, a segurança dos dados fica por encargo da Apple. Assim o usuário não precisa necessariamente confiar seus dados para uma equipe de desenvolvedores, ele pode confia-los à Apple. O CloudKit vai isolar os dados do usuário, de nós desenvolvedores. Dessa forma a aplicação ganha muita confiabilidade perante o público, afinal é mais fácil ele confiar no iCloud.
- Baixo Custo
O custo de um serviço de hospedagem de dados é algo que, definitivamente, deve ser levado em conta ao escolher a melhor opção. Com o CloudKit, se tem disponível uma quantidade considerável de armazenamento e transferência de dados de maneira gratuita, além dessa quantidade escalonar com a quantidade de usuários na aplicação. É possível conferir os valores no site do CloudKit.
- Vantagens para o usuário
Um ponto importante, é que o CloudKit também carrega vantagens para o usuário do app. Com ele é possível eliminar a necessidade de login para identificação, além de que ele terá acesso as notificações e aos dados à partir de todo dispositivo cadastrado no mesmo ID Apple.
Capacidade
Com o CloudKit é possível armazenar:
- String → "Textos", "Nomes", "Títulos"
- Números → Int, Float, Doubles
- Datas → 31/03/2020
- Assests → Imagens, Sons, Vídeos, Arquivos
- Localização → Core Location
- Bytes → 0101011011010101
- Referências → Referência a outra entidade
É válido ressaltar que todos os dados também podem ser guardados em listas.
Usando o CloudKit
O primeiro passo é ir no seu projeto e habilitar a capacidade de usar o CloudKit.
Uma vez habilitado, ao clicar em CloudKit Dashboard você será levado diretamente para a visualização online do container criado.
Como qualquer banco de dados, é necessário criar-se entidades. Para isso, deve-se selecionar o Schema, criar um novo tipo, e adicionar novos campos.
Para o uso da interface online para visualização, edição, e remoção de dados deve-se primeiramente marcar o nome dos registros como Queryable(pesquisáveis). E então ao voltar ao menu e selecionar data.
Agora na programação, os principais tipos de dados serão:
- CKRecord → Um dicionário de chave/valor de uma entidade
- CKDatabase → Acessor da database na Cloud.
- CKContainer → Contém as zonas, que por sua vez contém as databases.
- CKQuery → Operação de busca na database desejada
- NSPredicate → Uma definição lógica usada para restringir uma busca
O primeiro passo é criar um registro de uma entidade. Neste exemplo, Aluno.
Agora é necessário uma referência a qual database salvar este registro.
E então finalmente salvar o registro.
Obs: Grande parte das operações com CloudKit serão assíncronas.
Agora para buscar os registros já cadastrados executa-se uma Query(busca) na database desejada usando um predicado.
Para onde ir agora?
Agora é importante aplicar e se aprofundar nesses conceitos. Uma boa prática é implementar CloudKit num app já funcional com CoreData e adicionar notificações remotas.