Persistência de dados com CloudKit

Foto por: C Dustin

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.

Store your app’s data in iCloud and keep everything up to date across apps and on the web with CloudKit JS

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.

The CloudKit framework provides interfaces for moving data between your app and your iCloud containers. You use CloudKit to take your app’s existing data and store it in the cloud so that the user can access it on multiple devices. You can also store data in a public area where all users can access it.

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.

Página das capacidades do projeto com CloudKit habilitado

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.

--

--