{"id":2040,"date":"2015-12-16T01:01:42","date_gmt":"2015-12-16T01:01:41","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2040"},"modified":"2021-01-13T04:49:46","modified_gmt":"2021-01-13T12:49:46","slug":"build-mobile-apps-with-xamarin-and-couchbase-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/","title":{"rendered":"Crie aplicativos m\u00f3veis com o Xamarin e o Couchbase Mobile"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10209\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/xamarin-logo-1024x429.png\" alt=\"xamarin-logo\" width=\"900\" height=\"377\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/xamarin-logo-1024x429.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/xamarin-logo-300x126.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/xamarin-logo-768x322.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/xamarin-logo-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/xamarin-logo-1320x554.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/xamarin-logo.png 1452w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><br \/>\n<span style=\"text-align: justify;\">A implementa\u00e7\u00e3o de uma solu\u00e7\u00e3o Xamarin com o Couchbase Mobile \u00e9 a combina\u00e7\u00e3o perfeita para criar um aplicativo m\u00f3vel multiplataforma em C# que tenha persist\u00eancia local.  Isso permite que seu conte\u00fado e seus dados n\u00e3o sejam ef\u00eameros e, melhor ainda, que seu aplicativo m\u00f3vel n\u00e3o dependa de uma conex\u00e3o de rede o tempo todo.  Neste blog, exploraremos como come\u00e7ar a usar o <\/span><a style=\"text-align: justify;\" href=\"https:\/\/xamarin.com\/\">Xamarin<\/a><span style=\"text-align: justify;\"> e come\u00e7ar a implementar os componentes do Couchbase Lite da pilha do Couchbase Mobile para criar uma camada de armazenamento.<\/span><\/p>\n<h3>Nova solu\u00e7\u00e3o Xamarin<\/h3>\n<p style=\"text-align: justify;\">O Xamarin permite que voc\u00ea tenha a abordagem de escrever uma vez e executar em qualquer lugar, com uma interface de usu\u00e1rio nativa e desempenho nativo.  Com o pacote NuGet do Xamarin Couchbase Lite, voc\u00ea pode compartilhar c\u00f3digo entre plataformas usando o C# e o .NET Framework com suporte total \u00e0 API.  Ap\u00f3s o download e a instala\u00e7\u00e3o dos componentes iOS e Android do Xamarin, ao abrir o Xamarin Studio, voc\u00ea ver\u00e1 os materiais do Developer Center e alguns exemplos de solu\u00e7\u00f5es no lado direito.  Voc\u00ea pode experiment\u00e1-las \u00e0 vontade, mas, em vez disso, criaremos um novo projeto e inseriremos a solu\u00e7\u00e3o Couchbase Mobile.  Clique em \"New Solution\" (Nova solu\u00e7\u00e3o)<\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10211 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/new_solution_xamarin.png\" alt=\"\" width=\"1500\" height=\"671\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/new_solution_xamarin.png 1500w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/new_solution_xamarin-300x134.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/new_solution_xamarin-1024x458.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/new_solution_xamarin-768x344.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/new_solution_xamarin-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/new_solution_xamarin-1320x590.png 1320w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><br \/>\nAgora voc\u00ea ver\u00e1 uma p\u00e1gina de solu\u00e7\u00e3o do Xamarin.  Para este blog, vamos nos concentrar na cria\u00e7\u00e3o de um aplicativo Android e, para isso, vamos...<\/p>\n<ol>\n<li style=\"text-align: justify;\">Escolha \"Android\" no menu suspenso C# e, em seguida, \"Android Application\" como nosso projeto.<\/li>\n<li style=\"text-align: justify;\">Forne\u00e7a um nome para seu projeto, como abaixo, em que o nome \u00e9 \"CouchbaseMobile_Xamarin_App<\/li>\n<li style=\"text-align: justify;\">Clique em \"OK\".<\/li>\n<\/ol>\n<h3 style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10212\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/android_project.png\" alt=\"android_project\" width=\"1014\" height=\"604\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/android_project.png 1014w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/android_project-300x179.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/android_project-768x457.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/android_project-20x12.png 20w\" sizes=\"auto, (max-width: 1014px) 100vw, 1014px\" \/><br \/>\nAdicionar o pacote NuGet do Couchbase<\/h3>\n<p style=\"text-align: justify;\">Agora voc\u00ea tem um projeto de aplicativo Android vazio e adicionaremos o Couchbase Mobile na pr\u00f3xima etapa.  O Xamarin agora tem suporte de primeira classe para o NuGet, que \u00e9 incorporado e totalmente integrado.  O NuGet \u00e9 um sistema de gerenciamento de pacotes para .NET que simplifica o processo de uso de bibliotecas de terceiros em seu aplicativo m\u00f3vel, como o Couchbase Lite.  Agora, faremos o download do pacote Couchbase Lite.NET mais recente do NuGet no Xamarin Studio.<\/p>\n<ol>\n<li style=\"text-align: justify;\">Clique com o bot\u00e3o direito do mouse no seu projeto na se\u00e7\u00e3o do explorador \"Solution\".  Eu defini e criei um projeto chamado \"CouchbaseMobile_Xamarin_App<\/li>\n<li style=\"text-align: justify;\">Selecione \"Add\" (Adicionar)<\/li>\n<li style=\"text-align: justify;\">Selecione \"Adicionar pacotes<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10213 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/couchbase_nuget_package.png\" alt=\"Couchbase Nuget Package\" width=\"1500\" height=\"569\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_nuget_package.png 1500w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_nuget_package-300x114.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_nuget_package-1024x388.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_nuget_package-768x291.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_nuget_package-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_nuget_package-1320x501.png 1320w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><\/p>\n<p style=\"text-align: justify;\">Com o prompt da caixa de di\u00e1logo 'Add Packages' agora exibido como abaixo, vamos:<\/p>\n<ol>\n<li style=\"text-align: justify;\">Digite no campo de pesquisa superior direito \"Couchbase Lite\" e pressione Enter para procurar o pacote a ser instalado na Galeria oficial do NuGet<\/li>\n<li style=\"text-align: justify;\">Selecione o pacote Couchbase Lite na lista de resultados de retorno<\/li>\n<li style=\"text-align: justify;\">Clique em \"Add Package\" (Adicionar pacote)<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10214 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm.png\" alt=\"\" width=\"1622\" height=\"1070\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm.png 1622w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm-300x198.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm-1024x676.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm-768x507.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm-1536x1013.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm-20x13.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/screen-shot-2015-12-10-at-3.58.45-pm-1320x871.png 1320w\" sizes=\"auto, (max-width: 1622px) 100vw, 1622px\" \/><\/li>\n<\/ol>\n<h3>Console e pasta de pacotes<\/h3>\n<p style=\"text-align: justify;\">O Xamarin Studio agora adicionar\u00e1 os pacotes e todas as depend\u00eancias 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\u00e7\u00e3o, clique no \u00edcone:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Guia \"Package Console\" (Console de pacotes) no canto inferior direito do Xamarin Studio.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Voc\u00ea pode ver informa\u00e7\u00f5es detalhadas sobre o pacote Couchbase.Lite que est\u00e1 sendo instalado.  Onde o Console de pacotes ter\u00e1...<\/p>\n<ol>\n<li style=\"text-align: justify;\">Adicionando o Couchbase.Lite...<\/li>\n<li style=\"text-align: justify;\">...Haver\u00e1 outros arquivos que ser\u00e3o adicionados no meio...<\/li>\n<li style=\"text-align: justify;\">Por fim, voc\u00ea ver\u00e1 a mensagem \"Successfully added 'Couchbase.Lite ...' to your project<\/li>\n<\/ol>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10215\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/couchbase_install-1024x589.png\" alt=\"Couchbase Install\" width=\"900\" height=\"518\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_install-1024x589.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_install-300x173.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_install-768x442.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_install-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_install.png 1084w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><br \/>\nEm seguida, na se\u00e7\u00e3o Solution explorer, \u00e0 esquerda do Xamarin Studio, voc\u00ea ver\u00e1 os quatro pacotes a seguir agora instalados.  Abaixe a pasta \"Packages\" e voc\u00ea ver\u00e1:<\/p>\n<ol>\n<li style=\"text-align: justify;\">Couchbase.Lite<\/li>\n<li style=\"text-align: justify;\">Newtonsoft.Json<\/li>\n<li style=\"text-align: justify;\">SQLitePCL.raw_basic<\/li>\n<li style=\"text-align: justify;\">SQLitePCL.ugly<\/li>\n<\/ol>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10216\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/package_folder-1024x555.png\" alt=\"Package Folder\" width=\"900\" height=\"488\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/package_folder-1024x555.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/package_folder-300x163.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/package_folder-768x416.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/package_folder-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/package_folder.png 1155w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><br \/>\nPacote de atualiza\u00e7\u00e3o<\/h3>\n<p style=\"text-align: justify;\">Na pasta \"Packages\", agora voc\u00ea pode atualizar facilmente pacotes individuais ou todos eles para a vers\u00e3o mais recente ou remov\u00ea-los do projeto, clicando com o bot\u00e3o direito do mouse e selecionando o item de menu apropriado.<\/p>\n<ol>\n<li style=\"text-align: justify;\">Clique com o bot\u00e3o direito do mouse em \"Packages\" e clique em \"Update\" para atualizar todos os pacotes.<\/li>\n<li style=\"text-align: justify;\">No Xamarin Studio, voc\u00ea dever\u00e1 ver agora \"Updating 4 packages in project...\" (Atualizando 4 pacotes no projeto).<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10217 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/update_package.png\" alt=\"Update Package\" width=\"1500\" height=\"334\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package.png 1500w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package-300x67.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package-1024x228.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package-768x171.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package-1320x294.png 1320w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10218 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/update_package_01.png\" alt=\"Update Package 01\" width=\"1500\" height=\"387\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package_01.png 1500w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package_01-300x77.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package_01-1024x264.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package_01-768x198.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package_01-20x5.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/update_package_01-1320x341.png 1320w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><\/p>\n<h3>Aplicativos m\u00f3veis para Android e iOS<\/h3>\n<p style=\"text-align: justify;\">Adicionamos com sucesso o Couchbase Lite ao nosso projeto Android no Xamarin Studio.  Agora, vamos usar um c\u00f3digo inicial para criar um aplicativo que tenha um banco de dados m\u00f3vel local.  O aplicativo que estamos criando \u00e9 um aplicativo ToDo de rastreamento de tarefas que ter\u00e1 persist\u00eancia local, e o mais legal \u00e9 que s\u00f3 precisaremos escrever o c\u00f3digo do banco de dados uma vez para a solu\u00e7\u00e3o iOS e Android, pois estamos usando o Xamarin.  Um banco de dados e duas solu\u00e7\u00f5es de plataforma diferentes.  Abaixo, voc\u00ea pode ver a vers\u00e3o para Android e a UI para iOS.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10219\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/task_xamarin-1024x493.png\" alt=\"Task Xamarin\" width=\"900\" height=\"433\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_xamarin-1024x493.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_xamarin-300x144.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_xamarin-768x369.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_xamarin-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_xamarin.png 1058w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p style=\"text-align: justify;\">A vantagem aqui \u00e9 que, com apenas uma base de c\u00f3digo de banco de dados, voc\u00ea pode direcionar ambas as plataformas em vez de reescrever o c\u00f3digo do banco de dados novamente para ser espec\u00edfico da plataforma.  Abaixo, a vers\u00e3o iOS est\u00e1 executando a mesma base de c\u00f3digo do lado do cliente do Couchbase Lite que a vers\u00e3o Android acima.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10220\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/task_ios_xamarin.png\" alt=\"Task iOS Xamarin\" width=\"832\" height=\"541\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_ios_xamarin.png 832w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_ios_xamarin-300x195.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_ios_xamarin-768x499.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_ios_xamarin-20x13.png 20w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/p>\n<h3>Projeto Compartilhado<\/h3>\n<p style=\"text-align: justify;\">Come\u00e7aremos trazendo para o nosso projeto os frameworks necess\u00e1rios para criar o nosso banco de dados.  Voc\u00ea s\u00f3 precisar\u00e1 criar o banco de dados uma vez e poder\u00e1 fazer refer\u00eancia a ele nas v\u00e1rias plataformas compat\u00edveis com o seu aplicativo.<\/p>\n<ol>\n<li style=\"text-align: justify;\">Clique com o bot\u00e3o direito do mouse em seu projeto de aplicativo no Solution Explorer<\/li>\n<li style=\"text-align: justify;\">Selecione: Adicionar<strong>&gt;<\/strong>Adicionar novo projeto<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10221\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/shared_project.png\" alt=\"Shared Project\" width=\"748\" height=\"610\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project.png 748w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project-300x245.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project-20x16.png 20w\" sizes=\"auto, (max-width: 748px) 100vw, 748px\" \/><\/p>\n<p style=\"text-align: justify;\">Essa ser\u00e1 a nossa classe de projeto de banco de dados, portanto, nomeie o projeto adequadamente.  Para o exemplo, eu o nomeei \"shared_Couchbase_Database<\/p>\n<ol>\n<li style=\"text-align: justify;\">Selecione:  C#<\/li>\n<li style=\"text-align: justify;\">Selecione:  Op\u00e7\u00f5es de projeto compartilhado<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10222\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/shared_project_database-1024x618.png\" alt=\"Shared Project Database\" width=\"900\" height=\"543\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project_database-1024x618.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project_database-300x181.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project_database-768x463.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project_database-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/shared_project_database.png 1044w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h3>C\u00f3digo inicial do Couchbase<\/h3>\n<p style=\"text-align: justify;\">Come\u00e7aremos trazendo para o nosso projeto os frameworks necess\u00e1rios 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\u00e7\u00e3o na parte superior para poder usar as APIs do Couchbase:<\/p>\n<pre><code class=\"C#\">Using Couchbase.Lite;<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10223\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/couchbase_starter_code-1024x196.png\" alt=\"Couchbase Starter Code\" width=\"900\" height=\"172\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_starter_code-1024x196.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_starter_code-300x57.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_starter_code-768x147.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_starter_code-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_starter_code-1320x253.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/couchbase_starter_code.png 1500w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h3>Criar banco de dados<\/h3>\n<p style=\"text-align: justify;\">Usaremos as APIs do Couchbase Lite para criar um banco de dados m\u00f3vel agora.  No momento, estamos criando nosso projeto de banco de dados para fazer refer\u00eancia aos projetos de aplicativos iOS e Android.  Ele ter\u00e1 nossas opera\u00e7\u00f5es b\u00e1sicas de banco de dados.  Declararemos uma vari\u00e1vel Database e inicializaremos o banco de dados no construtor, passando um nome que ser\u00e1 o nome do nosso banco de dados para o m\u00e9todo \"GetDatabase\".  Se ele n\u00e3o existir, ser\u00e1 criado um banco de dados.  Acabamos de criar um banco de dados programaticamente usando as APIs do Couchbase Mobile com o c\u00f3digo abaixo:<\/p>\n<pre><code class=\"C#\">db = Manager.SharedInstance.GetDatabase(\"name_db\");<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10224\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/create_database.png\" alt=\"Create database\" width=\"875\" height=\"254\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/create_database.png 875w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/create_database-300x87.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/create_database-768x223.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/create_database-20x6.png 20w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><\/p>\n<h3>Opera\u00e7\u00f5es CRUD<\/h3>\n<p style=\"text-align: justify;\">Agora, criaremos 4 opera\u00e7\u00f5es b\u00e1sicas para nosso banco de dados m\u00f3vel.  Opera\u00e7\u00f5es de cria\u00e7\u00e3o, leitura, atualiza\u00e7\u00e3o e exclus\u00e3o.  J\u00e1 vimos anteriormente que, ao criar um banco de dados, tamb\u00e9m criamos um banco de dados de documentos quando passamos uma vari\u00e1vel.  Portanto, o \"Create\" j\u00e1 foi feito.  Simples!<\/p>\n<h3>Recuperar documento<\/h3>\n<p style=\"text-align: justify;\">Para obter uma tarefa espec\u00edfica que foi criada, criaremos um m\u00e9todo \"GetTask\" e passaremos um \"String id\". Esse id faz refer\u00eancia a um documento espec\u00edfico relacionado \u00e0 tarefa.<\/p>\n<p style=\"text-align: justify;\">O tipo de retorno do m\u00e9todo \u00e9 do tipo \"Tarefa\" e ser\u00e1 criado posteriormente.  Cada tarefa ou item criado pelo usu\u00e1rio final no aplicativo ter\u00e1 um ID de documento exclusivo no seu banco de dados.  Portanto, quando uma Tarefa \u00e9 criada, um documento \u00e9 criado em jun\u00e7\u00e3o.  Voc\u00ea pode pensar em um documento como a representa\u00e7\u00e3o de uma tarefa aqui.  No m\u00e9todo GetTask, retornaremos o documento associado.  A partir do documento espec\u00edfico que \u00e9 retornado, chamaremos a API \"UserProperties\" para obter as propriedades de um documento.  A tarefa que retornamos do m\u00e9todo agora ter\u00e1 refer\u00eancias \u00e0s propriedades do documento, por exemplo, id, name, notes, done.<\/p>\n<p><!--cke_bookmark_2959S--><\/p>\n<pre><code class=\"C# language-cs\">var doc = db.GetDocument(id); <\/code><\/pre>\n<pre><code class=\"C# language-cs\">var props = doc.UserProperties;<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10225\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/retrieve_doc.png\" alt=\"Retrieve doc\" width=\"854\" height=\"570\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_doc.png 854w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_doc-300x200.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_doc-768x513.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_doc-400x267.png 400w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_doc-450x300.png 450w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_doc-20x13.png 20w\" sizes=\"auto, (max-width: 854px) 100vw, 854px\" \/><\/p>\n<h3>Recuperar tarefas<\/h3>\n<p style=\"text-align: justify;\">O m\u00e9todo \"CreateAllDocumentsQuery\" criar\u00e1 uma consulta que corresponda a todos os documentos no banco de dados.<\/p>\n<pre><code class=\"C#\">var query = db.CreateAllDocumentsQuery ();<\/code><\/pre>\n<p style=\"text-align: justify;\">Chame o m\u00e9todo \"Run()\" na vari\u00e1vel de consulta para capturar todos os documentos e, a partir da\u00ed, voc\u00ea iterar\u00e1 por esses resultados para obter as propriedades de cada um dos documentos dispon\u00edveis.  Operaremos em uma linha resultante de um Coucbase Lite View, que \u00e9 um \u00edndice.<\/p>\n<p>Obtenha o ID chamando a propriedade \"DocumentID\" em uma determinada linha.<\/p>\n<pre><code class=\"bash\">ID = row.DocumentId,<\/code><\/pre>\n<p style=\"text-align: justify;\">Com cada objeto \"task\" que tiver seus resultados de propriedade inicializados, n\u00f3s o armazenaremos na lista de tarefas e o retornaremos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10226\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/retrieve_all_tasks-1024x449.png\" alt=\"Retrieve all tasks\" width=\"900\" height=\"395\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_all_tasks-1024x449.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_all_tasks-300x132.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_all_tasks-768x337.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_all_tasks-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/retrieve_all_tasks.png 1242w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h3>Salvar tarefa<\/h3>\n<p style=\"text-align: justify;\">Chame o m\u00e9todo \"PutProperties\" para salvar novas tarefas ou documentos, o que criar\u00e1 e salvar\u00e1 uma nova revis\u00e3o com as propriedades especificadas.<\/p>\n<p style=\"text-align: justify;\">O m\u00e9todo usa um Dictionary como par\u00e2metro de entrada, portanto, chamaremos o m\u00e9todo \"ToDictionary\" no item da tarefa.<\/p>\n<pre><code class=\"C#\">doc.PutProperties (item.ToDictionary ());<\/code><\/pre>\n<p style=\"text-align: justify;\">Se o valor de ID do objeto Task n\u00e3o for nulo, voc\u00ea primeiro recuperar\u00e1 o documento para atualizar os valores das chaves. Isso pode parecer familiar, pois voc\u00ea tamb\u00e9m fez isso na Etapa 5<\/p>\n<pre><code class=\"C#\">doc = db.GetDocument (item.ID);<\/code><\/pre>\n<p style=\"text-align: justify;\">Copie e cole o c\u00f3digo que atualizar\u00e1 o documento com os novos valores-chave do objeto Task antes do final da instru\u00e7\u00e3o 'else'<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10227\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/save_task-1024x582.png\" alt=\"Save task\" width=\"900\" height=\"512\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/save_task-1024x582.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/save_task-300x170.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/save_task-768x436.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/save_task-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/save_task.png 1030w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h3>Excluir tarefa<\/h3>\n<p style=\"text-align: justify;\">A \u00faltima opera\u00e7\u00e3o \u00e9 a opera\u00e7\u00e3o \"Delete\" e, para excluir um documento, primeiro voc\u00ea precisa obter o documento ou objeto de tarefa que deseja excluir do banco de dados.  Em seguida, voc\u00ea chamar\u00e1 o m\u00e9todo \"Delete\" no documento para remov\u00ea-lo do banco de dados.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10228\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/delete_task.png\" alt=\"Delete task\" width=\"980\" height=\"257\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/delete_task.png 980w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/delete_task-300x79.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/delete_task-768x201.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/delete_task-20x5.png 20w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/p>\n<p><code class=\"C#\">\u00a0<\/code><\/p>\n<p style=\"text-align: justify;\">Agora que voc\u00ea criou um banco de dados local com suas opera\u00e7\u00f5es, em seguida criaremos nosso arquivo \"Task\" (Tarefa) que conter\u00e1 as propriedades que representariam uma tarefa criada por um usu\u00e1rio.<\/p>\n<h3 style=\"text-align: justify;\">Classe de tarefas<\/h3>\n<p style=\"text-align: justify;\">Para criar a classe Task, clicaremos com o bot\u00e3o direito do mouse no projeto de banco de dados que foi criado anteriormente e selecionaremos:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Adicionar<strong>&gt;<\/strong>Novo arquivo ...<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10229\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/task.png\" alt=\"Task\" width=\"772\" height=\"663\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task.png 772w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task-300x258.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task-768x660.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task-20x17.png 20w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><\/p>\n<p style=\"text-align: justify;\">Na p\u00e1gina \"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 \u00e9 o nosso objeto Task, no qual criaremos as propriedades gen\u00e9ricas associadas para representar uma tarefa.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10230\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/task_empty.png\" alt=\"Task empty\" width=\"812\" height=\"615\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_empty.png 812w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_empty-300x227.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_empty-768x582.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_empty-20x15.png 20w\" sizes=\"auto, (max-width: 812px) 100vw, 812px\" \/><\/p>\n<h3>Propriedades da tarefa<\/h3>\n<p style=\"text-align: justify;\">Em seguida, vamos criar nossa classe Task, que conter\u00e1 todas as propriedades do nosso objeto Task.  Inclua a instru\u00e7\u00e3o using:<\/p>\n<p style=\"text-align: justify;\">usando System.Collections.Generic;<\/p>\n<p style=\"text-align: justify;\">Criaremos nossa classe Task com as propriedades que representam uma tarefa.  Lembre-se de que o Couchbase Mobile \u00e9 uma solu\u00e7\u00e3o de banco de dados NoSQL JSON, portanto, estamos armazenando nossos dados como valores-chave.  Abaixo, estamos usando um tipo \"Dictionary\" (Dicion\u00e1rio) para representar o esquema de dados de valor-chave para as chaves \"name\" (nome), \"notes\" (notas) e \"done\" (feito), que fariam refer\u00eancia \u00e0s respectivas vari\u00e1veis de classe com o mesmo nome.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10231\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2015\/12\/task_properties.png\" alt=\"Task properties\" width=\"990\" height=\"606\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_properties.png 990w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_properties-300x184.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_properties-768x470.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2015\/12\/task_properties-20x12.png 20w\" sizes=\"auto, (max-width: 990px) 100vw, 990px\" \/><\/p>\n<p style=\"text-align: justify;\">Agora voc\u00ea tem um banco de dados local completo em seu aplicativo m\u00f3vel e pode acessar o\u00a0 <code class=\"C#\"><a href=\"https:\/\/github.com\/WilliamHoang\/Tasky_Couchbase\">Portal do GitHub<\/a><\/code> para concluir o aplicativo Xamarin Mobile Task.  Voc\u00ea j\u00e1 tem um banco de dados m\u00f3vel conclu\u00eddo em seu aplicativo, e as pr\u00f3ximas etapas s\u00e3o a cria\u00e7\u00e3o de um aplicativo Xamarin de plataforma cruzada espec\u00edfico para a experi\u00eancia de usu\u00e1rio do iOS ou do Android.  Para o Couchbase Lite, voc\u00ea pode fazer refer\u00eancia ao <code class=\"C#\"><a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/develop\/training\/build-first-xamarin-android-app\/index.html\">Guia do Xamarin para Android<\/a><\/code> ou o <code class=\"C#\"><a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.1.0\/develop\/training\/build-first-xamarin-ios-app\/index.html\">Guia do Xamarin iOS<\/a><\/code> para saber mais sobre como criar experi\u00eancias m\u00f3veis off-line com o Sync e como criar \u00edndices de documentos usando visualiza\u00e7\u00f5es e, em seguida, consultando documentos para seu aplicativo m\u00f3vel.  H\u00e1 tamb\u00e9m a se\u00e7\u00e3o\u00a0<code class=\"C#\"><a href=\"https:\/\/github.com\/couchbaselabs\/mini-hacks\/tree\/master\/kitchen-sync\/xamarin\/project\">Mini-hack do Couchbase Mobile Xamarin<\/a><\/code> onde voc\u00ea pode aprender como criar um aplicativo m\u00f3vel off-line e exploraremos isso mais a fundo no pr\u00f3ximo blog do Xamarin Couchbase!<\/p>","protected":false},"excerpt":{"rendered":"<p>Implementing a Xamarin solution with Couchbase Mobile is the perfect combination in creating a cross-platform mobile application in C# that has local persistence.\u00a0 This allows your content and data to not be ephemeral but better yet, your mobile application is [&hellip;]<\/p>","protected":false},"author":30,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1810],"tags":[],"ppma_author":[8983],"class_list":["post-2040","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-mobile"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Build Mobile Apps with Xamarin and Couchbase Mobile<\/title>\n<meta name=\"description\" content=\"Learn how to get started with Xamarin and begin to implement the Couchbase Lite components from the Couchbase Mobile stack to create a storage layer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build Mobile Apps with Xamarin and Couchbase Mobile\" \/>\n<meta property=\"og:description\" content=\"Learn how to get started with Xamarin and begin to implement the Couchbase Lite components from the Couchbase Mobile stack to create a storage layer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-16T01:01:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-13T12:49:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/\"},\"author\":{\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\"},\"headline\":\"Build Mobile Apps with Xamarin and Couchbase Mobile\",\"datePublished\":\"2015-12-16T01:01:41+00:00\",\"dateModified\":\"2021-01-13T12:49:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/\"},\"wordCount\":1760,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Mobile\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/\",\"name\":\"Build Mobile Apps with Xamarin and Couchbase Mobile\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-12-16T01:01:41+00:00\",\"dateModified\":\"2021-01-13T12:49:46+00:00\",\"description\":\"Learn how to get started with Xamarin and begin to implement the Couchbase Lite components from the Couchbase Mobile stack to create a storage layer.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build Mobile Apps with Xamarin and Couchbase Mobile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\",\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"caption\":\"William Hoang, Mobile Developer Advocate, Couchbase\"},\"description\":\"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/william-hoang\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Crie aplicativos m\u00f3veis com o Xamarin e o Couchbase Mobile","description":"Learn how to get started with Xamarin and begin to implement the Couchbase Lite components from the Couchbase Mobile stack to create a storage layer.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/","og_locale":"pt_BR","og_type":"article","og_title":"Build Mobile Apps with Xamarin and Couchbase Mobile","og_description":"Learn how to get started with Xamarin and begin to implement the Couchbase Lite components from the Couchbase Mobile stack to create a storage layer.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-12-16T01:01:41+00:00","article_modified_time":"2021-01-13T12:49:46+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"William Hoang, Mobile Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"William Hoang, Mobile Developer Advocate, Couchbase","Est. reading time":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/"},"author":{"name":"William Hoang, Mobile Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32"},"headline":"Build Mobile Apps with Xamarin and Couchbase Mobile","datePublished":"2015-12-16T01:01:41+00:00","dateModified":"2021-01-13T12:49:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/"},"wordCount":1760,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Mobile"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/","name":"Crie aplicativos m\u00f3veis com o Xamarin e o Couchbase Mobile","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-12-16T01:01:41+00:00","dateModified":"2021-01-13T12:49:46+00:00","description":"Learn how to get started with Xamarin and begin to implement the Couchbase Lite components from the Couchbase Mobile stack to create a storage layer.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/build-mobile-apps-with-xamarin-and-couchbase-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Build Mobile Apps with Xamarin and Couchbase Mobile"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32","name":"William Hoang, defensor do desenvolvedor m\u00f3vel, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5","url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","caption":"William Hoang, Mobile Developer Advocate, Couchbase"},"description":"William foi um defensor do desenvolvedor na equipe de engenharia m\u00f3vel\/experi\u00eancia do desenvolvedor na Couchbase. Seu amor por caf\u00e9 e c\u00f3digo o levou ao mundo dos dispositivos m\u00f3veis, ao mesmo tempo em que apreciava as experi\u00eancias presenciais off-line. Antes disso, William trabalhou na equipe de rela\u00e7\u00f5es com desenvolvedores do Twitter, BlackBerry e Microsoft, al\u00e9m de ter sido engenheiro de GPS incorporado a software na Research In Motion. William se formou na McGill University em Engenharia El\u00e9trica de Software","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/william-hoang\/"}]}},"authors":[{"term_id":8983,"user_id":30,"is_guest":0,"slug":"william-hoang","display_name":"William Hoang, Mobile Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","author_category":"","last_name":"Hoang","first_name":"William","job_title":"","user_url":"","description":"William foi um defensor do desenvolvedor na equipe de engenharia m\u00f3vel\/experi\u00eancia do desenvolvedor na Couchbase. Seu amor por caf\u00e9 e c\u00f3digo o levou ao mundo dos dispositivos m\u00f3veis, ao mesmo tempo em que apreciava as experi\u00eancias presenciais off-line. Antes disso, William trabalhou na equipe de rela\u00e7\u00f5es com desenvolvedores do Twitter, BlackBerry e Microsoft, al\u00e9m de ter sido engenheiro de GPS incorporado a software na Research In Motion. William se formou na McGill University em Engenharia El\u00e9trica de Software"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2040"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2040\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2040"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2040"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}