xamarin-logo
A implementação de uma solução Xamarin com o Couchbase Mobile é a combinação perfeita para criar um aplicativo móvel multiplataforma em C# que tenha persistência local. Isso permite que seu conteúdo e seus dados não sejam efêmeros e, melhor ainda, que seu aplicativo móvel não dependa de uma conexão de rede o tempo todo. Neste blog, exploraremos como começar a usar o Xamarin e começar a implementar os componentes do Couchbase Lite da pilha do Couchbase Mobile para criar uma camada de armazenamento.

Nova solução Xamarin

O Xamarin permite que você tenha a abordagem de escrever uma vez e executar em qualquer lugar, com uma interface de usuário nativa e desempenho nativo. Com o pacote NuGet do Xamarin Couchbase Lite, você pode compartilhar código entre plataformas usando o C# e o .NET Framework com suporte total à API. Após o download e a instalação dos componentes iOS e Android do Xamarin, ao abrir o Xamarin Studio, você verá os materiais do Developer Center e alguns exemplos de soluções no lado direito. Você pode experimentá-las à vontade, mas, em vez disso, criaremos um novo projeto e inseriremos a solução Couchbase Mobile. Clique em "New Solution" (Nova solução)


Agora você verá uma página de solução do Xamarin. Para este blog, vamos nos concentrar na criação de um aplicativo Android e, para isso, vamos...

  1. Escolha "Android" no menu suspenso C# e, em seguida, "Android Application" como nosso projeto.
  2. Forneça um nome para seu projeto, como abaixo, em que o nome é "CouchbaseMobile_Xamarin_App
  3. Clique em "OK".

android_project
Adicionar o pacote NuGet do Couchbase

Agora você tem um projeto de aplicativo Android vazio e adicionaremos o Couchbase Mobile na próxima etapa. O Xamarin agora tem suporte de primeira classe para o NuGet, que é incorporado e totalmente integrado. O NuGet é um sistema de gerenciamento de pacotes para .NET que simplifica o processo de uso de bibliotecas de terceiros em seu aplicativo móvel, como o Couchbase Lite. Agora, faremos o download do pacote Couchbase Lite.NET mais recente do NuGet no Xamarin Studio.

  1. Clique com o botão direito do mouse no seu projeto na seção do explorador "Solution". Eu defini e criei um projeto chamado "CouchbaseMobile_Xamarin_App
  2. Selecione "Add" (Adicionar)
  3. Selecione "Adicionar pacotes

Couchbase Nuget Package

Com o prompt da caixa de diálogo 'Add Packages' agora exibido como abaixo, vamos:

  1. Digite no campo de pesquisa superior direito "Couchbase Lite" e pressione Enter para procurar o pacote a ser instalado na Galeria oficial do NuGet
  2. Selecione o pacote Couchbase Lite na lista de resultados de retorno
  3. Clique em "Add Package" (Adicionar pacote)

Console e pasta de pacotes

O Xamarin Studio agora adicionará os pacotes e todas as dependências do Couchbase Lite, no qual, no momento em que escrevemos, estamos usando a V1.1.2.0. Para verificar e ver o progresso da instalação, clique no ícone:

  • Guia "Package Console" (Console de pacotes) no canto inferior direito do Xamarin Studio.

Você pode ver informações detalhadas sobre o pacote Couchbase.Lite que está sendo instalado. Onde o Console de pacotes terá...

  1. Adicionando o Couchbase.Lite...
  2. ...Haverá outros arquivos que serão adicionados no meio...
  3. Por fim, você verá a mensagem "Successfully added 'Couchbase.Lite ...' to your project

Couchbase Install
Em seguida, na seção Solution explorer, à esquerda do Xamarin Studio, você verá os quatro pacotes a seguir agora instalados. Abaixe a pasta "Packages" e você verá:

  1. Couchbase.Lite
  2. Newtonsoft.Json
  3. SQLitePCL.raw_basic
  4. SQLitePCL.ugly

Package Folder
Pacote de atualização

Na pasta "Packages", agora você pode atualizar facilmente pacotes individuais ou todos eles para a versão mais recente ou removê-los do projeto, clicando com o botão direito do mouse e selecionando o item de menu apropriado.

  1. Clique com o botão direito do mouse em "Packages" e clique em "Update" para atualizar todos os pacotes.
  2. No Xamarin Studio, você deverá ver agora "Updating 4 packages in project..." (Atualizando 4 pacotes no projeto).

Update Package

Update Package 01

Aplicativos móveis para Android e iOS

Adicionamos com sucesso o Couchbase Lite ao nosso projeto Android no Xamarin Studio. Agora, vamos usar um código inicial para criar um aplicativo que tenha um banco de dados móvel local. O aplicativo que estamos criando é um aplicativo ToDo de rastreamento de tarefas que terá persistência local, e o mais legal é que só precisaremos escrever o código do banco de dados uma vez para a solução iOS e Android, pois estamos usando o Xamarin. Um banco de dados e duas soluções de plataforma diferentes. Abaixo, você pode ver a versão para Android e a UI para iOS.

Task Xamarin

A vantagem aqui é que, com apenas uma base de código de banco de dados, você pode direcionar ambas as plataformas em vez de reescrever o código do banco de dados novamente para ser específico da plataforma. Abaixo, a versão iOS está executando a mesma base de código do lado do cliente do Couchbase Lite que a versão Android acima.

Task iOS Xamarin

Projeto Compartilhado

Começaremos trazendo para o nosso projeto os frameworks necessários para criar o nosso banco de dados. Você só precisará criar o banco de dados uma vez e poderá fazer referência a ele nas várias plataformas compatíveis com o seu aplicativo.

  1. Clique com o botão direito do mouse em seu projeto de aplicativo no Solution Explorer
  2. Selecione: Adicionar>Adicionar novo projeto

Shared Project

Essa será a nossa classe de projeto de banco de dados, portanto, nomeie o projeto adequadamente. Para o exemplo, eu o nomeei "shared_Couchbase_Database

  1. Selecione: C#
  2. Selecione: Opções de projeto compartilhado

Shared Project Database

Código inicial do Couchbase

Começaremos trazendo para o nosso projeto os frameworks necessários para criar o nosso banco de dados. Neste ponto, seu projeto de aplicativo deve ter agora o projeto do aplicativo e um projeto para o banco de dados. O nosso tem o nome de "shared_Couchbase_Database" e o arquivo gerado foi renomeado para "TaskManager". Abra esse arquivo e adicionaremos a seguinte instrução na parte superior para poder usar as APIs do Couchbase:

Couchbase Starter Code

Criar banco de dados

Usaremos as APIs do Couchbase Lite para criar um banco de dados móvel agora. No momento, estamos criando nosso projeto de banco de dados para fazer referência aos projetos de aplicativos iOS e Android. Ele terá nossas operações básicas de banco de dados. Declararemos uma variável Database e inicializaremos o banco de dados no construtor, passando um nome que será o nome do nosso banco de dados para o método "GetDatabase". Se ele não existir, será criado um banco de dados. Acabamos de criar um banco de dados programaticamente usando as APIs do Couchbase Mobile com o código abaixo:

Create database

Operações CRUD

Agora, criaremos 4 operações básicas para nosso banco de dados móvel. Operações de criação, leitura, atualização e exclusão. Já vimos anteriormente que, ao criar um banco de dados, também criamos um banco de dados de documentos quando passamos uma variável. Portanto, o "Create" já foi feito. Simples!

Recuperar documento

Para obter uma tarefa específica que foi criada, criaremos um método "GetTask" e passaremos um "String id". Esse id faz referência a um documento específico relacionado à tarefa.

O tipo de retorno do método é do tipo "Tarefa" e será criado posteriormente. Cada tarefa ou item criado pelo usuário final no aplicativo terá um ID de documento exclusivo no seu banco de dados. Portanto, quando uma Tarefa é criada, um documento é criado em junção. Você pode pensar em um documento como a representação de uma tarefa aqui. No método GetTask, retornaremos o documento associado. A partir do documento específico que é retornado, chamaremos a API "UserProperties" para obter as propriedades de um documento. A tarefa que retornamos do método agora terá referências às propriedades do documento, por exemplo, id, name, notes, done.

Retrieve doc

Recuperar tarefas

O método "CreateAllDocumentsQuery" criará uma consulta que corresponda a todos os documentos no banco de dados.

Chame o método "Run()" na variável de consulta para capturar todos os documentos e, a partir daí, você iterará por esses resultados para obter as propriedades de cada um dos documentos disponíveis. Operaremos em uma linha resultante de um Coucbase Lite View, que é um índice.

Obtenha o ID chamando a propriedade "DocumentID" em uma determinada linha.

Com cada objeto "task" que tiver seus resultados de propriedade inicializados, nós o armazenaremos na lista de tarefas e o retornaremos.

Retrieve all tasks

Salvar tarefa

Chame o método "PutProperties" para salvar novas tarefas ou documentos, o que criará e salvará uma nova revisão com as propriedades especificadas.

O método usa um Dictionary como parâmetro de entrada, portanto, chamaremos o método "ToDictionary" no item da tarefa.

Se o valor de ID do objeto Task não for nulo, você primeiro recuperará o documento para atualizar os valores das chaves. Isso pode parecer familiar, pois você também fez isso na Etapa 5

Copie e cole o código que atualizará o documento com os novos valores-chave do objeto Task antes do final da instrução 'else'

Save task

Excluir tarefa

A última operação é a operação "Delete" e, para excluir um documento, primeiro você precisa obter o documento ou objeto de tarefa que deseja excluir do banco de dados. Em seguida, você chamará o método "Delete" no documento para removê-lo do banco de dados.

Delete task

 

Agora que você criou um banco de dados local com suas operações, em seguida criaremos nosso arquivo "Task" (Tarefa) que conterá as propriedades que representariam uma tarefa criada por um usuário.

Classe de tarefas

Para criar a classe Task, clicaremos com o botão direito do mouse no projeto de banco de dados que foi criado anteriormente e selecionaremos:

  • Adicionar>Novo arquivo ...

Task

Na página "New File" (Novo arquivo), criaremos um arquivo C# vazio chamado "Task" (Tarefa) para o nosso exemplo aqui e, em seguida, clicaremos em "New" (Novo). Esse é o nosso objeto Task, no qual criaremos as propriedades genéricas associadas para representar uma tarefa.

Task empty

Propriedades da tarefa

Em seguida, vamos criar nossa classe Task, que conterá todas as propriedades do nosso objeto Task. Inclua a instrução using:

usando System.Collections.Generic;

Criaremos nossa classe Task com as propriedades que representam uma tarefa. Lembre-se de que o Couchbase Mobile é uma solução de banco de dados NoSQL JSON, portanto, estamos armazenando nossos dados como valores-chave. Abaixo, estamos usando um tipo "Dictionary" (Dicionário) para representar o esquema de dados de valor-chave para as chaves "name" (nome), "notes" (notas) e "done" (feito), que fariam referência às respectivas variáveis de classe com o mesmo nome.

Task properties

Agora você tem um banco de dados local completo em seu aplicativo móvel e pode acessar o  Portal do GitHub para concluir o aplicativo Xamarin Mobile Task. Você já tem um banco de dados móvel concluído em seu aplicativo, e as próximas etapas são a criação de um aplicativo Xamarin de plataforma cruzada específico para a experiência de usuário do iOS ou do Android. Para o Couchbase Lite, você pode fazer referência ao Guia do Xamarin para Android ou o Guia do Xamarin iOS para saber mais sobre como criar experiências móveis off-line com o Sync e como criar índices de documentos usando visualizações e, em seguida, consultando documentos para seu aplicativo móvel. Há também a seção Mini-hack do Couchbase Mobile Xamarin onde você pode aprender como criar um aplicativo móvel off-line e exploraremos isso mais a fundo no próximo blog do Xamarin Couchbase!

Autor

Postado por William Hoang, defensor do desenvolvedor móvel, Couchbase

William foi um defensor do desenvolvedor na equipe de engenharia móvel/experiência do desenvolvedor na Couchbase. Seu amor por café e código o levou ao mundo dos dispositivos móveis, ao mesmo tempo em que apreciava as experiências presenciais off-line. Antes disso, William trabalhou na equipe de relações com desenvolvedores do Twitter, BlackBerry e Microsoft, além de ter sido engenheiro de GPS incorporado a software na Research In Motion. William se formou na McGill University em Engenharia Elétrica de Software

Deixar uma resposta