{"id":7252,"date":"2019-07-24T02:10:36","date_gmt":"2019-07-24T09:10:36","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7252"},"modified":"2025-06-13T20:08:58","modified_gmt":"2025-06-14T03:08:58","slug":"synchronized-drawing-apps-with-couchbase-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/synchronized-drawing-apps-with-couchbase-mobile\/","title":{"rendered":"Aplicativos de desenho sincronizados com o Couchbase Mobile"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/mobile\/\">Couchbase Mobile<\/a> cont\u00e9m um robusto e poderoso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/lite\/\">banco de dados NoSQL incorporado<\/a>, chamado <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.5\/introduction.html\">Couchbase Lite<\/a>que pode ser usado em seu iOS, Android e <a href=\"https:\/\/visualstudio.microsoft.com\/xamarin\/\">Xamarin<\/a> aplicativos. A pilha do Couchbase Mobile tamb\u00e9m cont\u00e9m <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.5\/introduction.html\">Gateway de sincroniza\u00e7\u00e3o<\/a>. O Sync Gateway permite a sincroniza\u00e7\u00e3o segura de dados entre clientes habilitados para o Couchbase Lite. O Sync Gateway existe h\u00e1 anos, mas, no ano passado, o Couchbase Mobile 2.0 introduziu oficialmente um <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.0\/index.html\">Replica\u00e7\u00e3o totalmente nova baseada em web-sockets<\/a> para sincroniza\u00e7\u00e3o de dados que \u00e9 mais eficiente do que seu antecessor baseado em HTTP.<\/p>\n<p>Ao considerar todas as altera\u00e7\u00f5es no Couchbase Mobile e o recente lan\u00e7amento do <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.5\/index.html\">vers\u00e3o 2.5<\/a>Por isso, comecei a pensar em maneiras exclusivas de visualizar as melhorias usando um aplicativo. Comecei definindo alguns requisitos simples. Eu queria que o aplicativo:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Seja simples<\/li>\n<li>Seja divertido<\/li>\n<li>Mostre o poder do Couchbase Mobile<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Por fim, decidi analisar o que seria necess\u00e1rio para criar um aplicativo que envolvesse algo que todos n\u00f3s provavelmente j\u00e1 fizemos quando crian\u00e7as, por divers\u00e3o ou quando estamos simplesmente entediados. Desenhar! E o que \u00e9 mais divertido do que desenhar? Isso mesmo, desenho colaborativo!<\/p>\n<p><img decoding=\"async\" style=\"margin-left: auto;margin-right: auto\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/07\/snake.gif\" alt=\"snake\" \/><\/p>\n<h2>Primeiros passos<\/h2>\n<p>Eu nunca havia criado um aplicativo que suportasse desenho em tempo real, mas conhecia algumas abordagens que poderiam dar conta do recado.  Para mim, a primeira op\u00e7\u00e3o era uma biblioteca que j\u00e1 vinha sendo comentada h\u00e1 alguns anos; <a href=\"https:\/\/skia.org\/\">Skia<\/a>.<\/p>\n<div>\n<p>O Skia \u00e9 um software de c\u00f3digo aberto 2D <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graphics_library\">biblioteca de gr\u00e1ficos<\/a> que fornece APIs comuns que funcionam em uma variedade de plataformas de hardware e software. Ele funciona como o mecanismo gr\u00e1fico do Google Chrome e do Chrome OS, do Android, do Mozilla Firefox e do Firefox OS, e de muitos outros produtos, inclusive m\u00f3veis. O Skia \u00e9 mantido principalmente pelo Google, mas \u00e9 totalmente gratuito para uso de qualquer pessoa.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-7260\" style=\"float: right;margin: 20px\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/07\/skia_logo-300x166.png\" alt=\"\" width=\"300\" height=\"166\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/skia_logo-300x166.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/skia_logo-1024x565.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/skia_logo-768x424.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/skia_logo-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/skia_logo.png 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<\/div>\n<p>Gostei da ideia de usar o Skia para dar suporte aos meus desenhos acionados por efeitos de toque, mas queria criar um aplicativo multiplataforma. Com mais de alguns anos de experi\u00eancia em Xamarin, eu j\u00e1 estava familiarizado com <a href=\"https:\/\/docs.microsoft.com\/en-us\/xamarin\/xamarin-forms\/user-interface\/graphics\/skiasharp\/\">SkiaSharp<\/a>uma implementa\u00e7\u00e3o de plataforma cruzada baseada em .NET do Skia.<\/p>\n<p>Ent\u00e3o, criei um <a href=\"https:\/\/docs.microsoft.com\/en-us\/xamarin\/xamarin-forms\/\">Xamarin.Forms<\/a> e incluiu a solu\u00e7\u00e3o SkiaSharp <a href=\"https:\/\/www.nuget.org\/\">nuget<\/a> pacote. Fiquei impressionado, pois ap\u00f3s apenas algumas linhas de c\u00f3digo eu tinha um Skia Canvas (SkCanvasView) em minha interface do usu\u00e1rio,<\/p>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-xml\" data-lang=\"xml\"><\/code><\/pre>\n<\/div>\n<\/div>\n<p>e pude come\u00e7ar a ouvir os eventos de toque no c\u00f3digo da minha p\u00e1gina.<\/p>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-c#\" data-lang=\"c#\">void OnTouchEffectAction(object sender, TouchActionEventArgs args)\r\n{\r\n    var point = new Models.Point\r\n    {\r\n        X = args.Location.X,\r\n        Y = args.Location.Y\r\n    };\r\n\r\n    switch (args.Type)\r\n    {\r\n        case TouchActionType.Pressed:\r\n            ...\r\n            break;\r\n        case TouchActionType.Moved:\r\n            ...\r\n            break;\r\n    }\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<p>A partir desses eventos, consegui reunir a base para renderiza\u00e7\u00f5es vetoriais 2D em uma tela. Afinal de contas, os desenhos bidimensionais se resumem a um componente central: um ponto. Uma cole\u00e7\u00e3o de pontos cria um caminho, e uma cole\u00e7\u00e3o de caminhos cria... um desenho.<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Huzzah\">Huzzah<\/a>! Agora que eu conseguia capturar os pontos, criar caminhos a partir desses pontos e, por fim, desenhos a partir desses caminhos, eu tinha os dados necess\u00e1rios para compartilhar entre telas em inst\u00e2ncias de aplicativos separadas.<\/p>\n<h2>O poder do Couchbase Mobile<\/h2>\n<p>Como mencionado anteriormente, a pilha do Couchbase Mobile cont\u00e9m um banco de dados NoSQL incorporado chamado Couchbase Lite e um mecanismo de sincroniza\u00e7\u00e3o de dados chamado Sync Gateway. Combinado com o poder do Couchbase Server, um banco de dados NoSQL distribu\u00eddo baseado em JSON, os dados podem ser enviados e recebidos de e para a borda.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2755 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/CBMDiagram-300x177.png\" alt=\"Couchbase Mobile\" width=\"346\" height=\"204\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/CBMDiagram-300x177.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/CBMDiagram-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/CBMDiagram.png 412w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/p>\n<p>O suporte ao Sync Gateway est\u00e1 totalmente integrado aos pacotes Nuget do Couchbase.Lite e do Couchbase.Lite.Enterprise, e voc\u00ea pode encontrar mais informa\u00e7\u00f5es sobre como fazer isso <a href=\"https:\/\/docs.couchbase.com\/userprofile-couchbase-mobile\/sync\/userprofile\/xamarin\/userprofile_sync.html\">aqui<\/a>.<\/p>\n<p>A chave para o armazenamento de dados em um banco de dados baseado em documentos est\u00e1 centrada em como o <a href=\"https:\/\/docs.couchbase.com\/server\/4.5\/data-modeling\/intro-data-modeling.html\">os dados s\u00e3o modelados<\/a>. Felizmente, nesse aplicativo, a modelagem de dados foi f\u00e1cil. Tudo ficou completo porque tudo o que eu precisava armazenar, via JSON, era uma cole\u00e7\u00e3o de pontos dentro de cole\u00e7\u00f5es de caminhos.<\/p>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-c#\" data-lang=\"c#\">{\r\n    \"color\": \"#000000\",\r\n    \"createdBy\": \"cca6ebe8-a713-49ac-bb86-cff0fb095ab2\",\r\n    \"id\": \"059fee8c-fbb3-450e-a1f1-61d82a28e68b\",\r\n    \"points\": [\r\n        {\r\n            \"type\": \"point\" (ponto),\r\n            \"x\": 101.333,\r\n            \"y\": 339.667\r\n        },\r\n        {\r\n            \"type\": \"point\" (ponto),\r\n            \"x\": 101.333,\r\n            \"y\": 340.3333282470703\r\n        }\r\n    ],\r\n    \"type\": \"path\"\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<p>Em seguida, simplesmente salvei as informa\u00e7\u00f5es de ponto e caminho no banco de dados Couchbase Lite incorporado. A partir da\u00ed, o Sync Gateway cuida do resto e, voil\u00e0, uma tela compartilhada simplificada com o Couchbase Mobile!<\/p>\n<p><img decoding=\"async\" style=\"margin-left: auto;margin-right: auto\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/07\/N1QL_Rick.gif\" alt=\"N1QL-Rick\" \/><\/p>\n<h2>Apresentando o CouchDraw<\/h2>\n<p>Obviamente, eu n\u00e3o mencionei alguns dos detalhes essenciais do aplicativo sobre o qual estou falando, mas n\u00e3o se preocupe, eu criei um <a href=\"https:\/\/github.com\/couchbaselabs\/CouchDraw\">novo reposit\u00f3rio<\/a> para isso! No novo \"<a href=\"https:\/\/github.com\/couchbaselabs\/CouchDraw\">CouchDraw<\/a>\", juntamente com o c\u00f3digo-fonte, tamb\u00e9m inclu\u00ed um arquivo <a href=\"https:\/\/github.com\/couchbaselabs\/CouchDraw\/blob\/master\/README.md\">LEIAME<\/a> com <strong>muitos<\/strong> <strong>mais<\/strong> detalhes sobre como fazer download, configurar e executar a solu\u00e7\u00e3o. Sinta-se \u00e0 vontade para largar tudo o que est\u00e1 fazendo agora e ir dar uma olhada!<\/p>\n<p><a href=\"https:\/\/github.com\/couchbaselabs\/CouchDraw\">CouchDraw<\/a> \u00e9 um aplicativo muito b\u00e1sico e, como tal, h\u00e1 muitas maneiras de melhor\u00e1-lo (\u00e9 aqui que voc\u00ea entra). Desafio a comunidade m\u00f3vel e do Couchbase a se aprofundar e expandir <a href=\"https:\/\/github.com\/couchbaselabs\/CouchDraw\">CouchDraw's<\/a> funcionalidade!<\/p>\n<p>Algumas ideias de novos recursos podem incluir:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Substitui\u00e7\u00e3o dos bot\u00f5es de cores por um controle deslizante de intervalo para sele\u00e7\u00e3o de cores.<\/li>\n<li>Adi\u00e7\u00e3o da capacidade de alterar a espessura da linha.<\/li>\n<li>Adi\u00e7\u00e3o da capacidade de apagar linhas que foram desenhadas.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Pr\u00f3ximas etapas<\/h2>\n<p>Al\u00e9m de estender o suporte a desenhos sincronizados para iOS e Android nativos, tamb\u00e9m estarei integrando o <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.5\/csharp.html#peer-to-peer-sync\">replica\u00e7\u00e3o ponto a ponto<\/a> e <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.5\/csharp.html#predictive-query\">consulta preditiva<\/a> recursos em <a href=\"https:\/\/github.com\/couchbaselabs\/CouchDraw\">CouchDraw<\/a>. Fique atento a mais postagens desta s\u00e9rie!<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Couchbase Mobile contains a robust and powerful embedded NoSQL database, called Couchbase Lite, that can be used within your iOS, Android, and Xamarin apps. The Couchbase Mobile stack also contains Sync Gateway. Sync Gateway enables secure data synchronization across Couchbase [&hellip;]<\/p>","protected":false},"author":34959,"featured_media":7261,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,2381,7667,1810,1816,1819,2366,2351],"tags":[2213,2350,2363],"ppma_author":[9080],"class_list":["post-7252","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-community","category-couchbase-lite","category-couchbase-mobile","category-couchbase-server","category-data-modeling","category-sync-gateway","category-xamarin","tag-couchbase-lite-2-0","tag-cross-platform-mobile","tag-xamarin-forms"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Synchronized Drawing Apps with Couchbase Mobile - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Synchronized drawing apps made easy with the power of Couchbase Lite, Couchbase Sync Gateway, Couchbase Server, and Xamarin.Forms.\" \/>\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\/synchronized-drawing-apps-with-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Synchronized Drawing Apps with Couchbase Mobile\" \/>\n<meta property=\"og:description\" content=\"Synchronized drawing apps made easy with the power of Couchbase Lite, Couchbase Sync Gateway, Couchbase Server, and Xamarin.Forms.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/synchronized-drawing-apps-with-couchbase-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-24T09:10:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:08:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"589\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Rob Hedgpeth, Senior Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@probablyrealrob\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rob Hedgpeth, Senior Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/\"},\"author\":{\"name\":\"Rob Hedgpeth, Senior Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/4fe39f690069382f7641d3a02f551e47\"},\"headline\":\"Synchronized Drawing Apps with Couchbase Mobile\",\"datePublished\":\"2019-07-24T09:10:36+00:00\",\"dateModified\":\"2025-06-14T03:08:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/\"},\"wordCount\":807,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif\",\"keywords\":[\"Couchbase Lite 2.0\",\"cross-platform mobile\",\"xamarin.forms\"],\"articleSection\":[\".NET\",\"Community\",\"Couchbase Lite\",\"Couchbase Mobile\",\"Couchbase Server\",\"Data Modeling\",\"Sync Gateway\",\"Xamarin\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/\",\"name\":\"Synchronized Drawing Apps with Couchbase Mobile - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif\",\"datePublished\":\"2019-07-24T09:10:36+00:00\",\"dateModified\":\"2025-06-14T03:08:58+00:00\",\"description\":\"Synchronized drawing apps made easy with the power of Couchbase Lite, Couchbase Sync Gateway, Couchbase Server, and Xamarin.Forms.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif\",\"width\":600,\"height\":589},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Synchronized Drawing Apps with 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\/4fe39f690069382f7641d3a02f551e47\",\"name\":\"Rob Hedgpeth, Senior Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d2687b799f515d10560e40ed5b695b63\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8059b152c76ec2d3d1a3a05ad6dfd02e2c74a4ae158b724c3420b254c5fd7499?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8059b152c76ec2d3d1a3a05ad6dfd02e2c74a4ae158b724c3420b254c5fd7499?s=96&d=mm&r=g\",\"caption\":\"Rob Hedgpeth, Senior Developer Advocate, Couchbase\"},\"description\":\"Rob Hedgpeth is a Senior Developer Advocate at Couchbase specializing in mobile and IoT technologies. Rob has been developing applications of all flavors for over a decade, but has primarily been focused on the mobile space since 2010. Prior to working at Couchbase Rob worked as a Mobile Architect at Xamarin and Microsoft.\",\"sameAs\":[\"https:\/\/x.com\/probablyrealrob\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/robert-hedgpeth\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Synchronized Drawing Apps with Couchbase Mobile - The Couchbase Blog","description":"Aplicativos de desenho sincronizados facilitados com o poder do Couchbase Lite, do Couchbase Sync Gateway, do Couchbase Server e do Xamarin.Forms.","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\/synchronized-drawing-apps-with-couchbase-mobile\/","og_locale":"pt_BR","og_type":"article","og_title":"Synchronized Drawing Apps with Couchbase Mobile","og_description":"Synchronized drawing apps made easy with the power of Couchbase Lite, Couchbase Sync Gateway, Couchbase Server, and Xamarin.Forms.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/synchronized-drawing-apps-with-couchbase-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-07-24T09:10:36+00:00","article_modified_time":"2025-06-14T03:08:58+00:00","og_image":[{"width":600,"height":589,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif","type":"image\/gif"}],"author":"Rob Hedgpeth, Senior Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@probablyrealrob","twitter_misc":{"Written by":"Rob Hedgpeth, Senior Developer Advocate, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/"},"author":{"name":"Rob Hedgpeth, Senior Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/4fe39f690069382f7641d3a02f551e47"},"headline":"Synchronized Drawing Apps with Couchbase Mobile","datePublished":"2019-07-24T09:10:36+00:00","dateModified":"2025-06-14T03:08:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/"},"wordCount":807,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif","keywords":["Couchbase Lite 2.0","cross-platform mobile","xamarin.forms"],"articleSection":[".NET","Community","Couchbase Lite","Couchbase Mobile","Couchbase Server","Data Modeling","Sync Gateway","Xamarin"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/","name":"Synchronized Drawing Apps with Couchbase Mobile - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif","datePublished":"2019-07-24T09:10:36+00:00","dateModified":"2025-06-14T03:08:58+00:00","description":"Aplicativos de desenho sincronizados facilitados com o poder do Couchbase Lite, do Couchbase Sync Gateway, do Couchbase Server e do Xamarin.Forms.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/snake.gif","width":600,"height":589},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/synchronized-drawing-apps-with-couchbase-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Synchronized Drawing Apps with 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\/4fe39f690069382f7641d3a02f551e47","name":"Rob Hedgpeth, defensor s\u00eanior do desenvolvedor, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d2687b799f515d10560e40ed5b695b63","url":"https:\/\/secure.gravatar.com\/avatar\/8059b152c76ec2d3d1a3a05ad6dfd02e2c74a4ae158b724c3420b254c5fd7499?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8059b152c76ec2d3d1a3a05ad6dfd02e2c74a4ae158b724c3420b254c5fd7499?s=96&d=mm&r=g","caption":"Rob Hedgpeth, Senior Developer Advocate, Couchbase"},"description":"Rob Hedgpeth \u00e9 um desenvolvedor s\u00eanior defensor da Couchbase, especializado em tecnologias m\u00f3veis e de IoT. Rob tem desenvolvido aplicativos de todos os tipos h\u00e1 mais de uma d\u00e9cada, mas tem se concentrado principalmente no espa\u00e7o m\u00f3vel desde 2010. Antes de trabalhar na Couchbase, Rob trabalhou como arquiteto m\u00f3vel na Xamarin e na Microsoft.","sameAs":["https:\/\/x.com\/probablyrealrob"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/robert-hedgpeth\/"}]}},"authors":[{"term_id":9080,"user_id":34959,"is_guest":0,"slug":"robert-hedgpeth","display_name":"Rob Hedgpeth, Senior Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/8059b152c76ec2d3d1a3a05ad6dfd02e2c74a4ae158b724c3420b254c5fd7499?s=96&d=mm&r=g","author_category":"","last_name":"Hedgpeth, Senior Developer Advocate, Couchbase","first_name":"Rob","job_title":"","user_url":"","description":"Rob Hedgpeth \u00e9 um desenvolvedor s\u00eanior defensor da Couchbase, especializado em tecnologias m\u00f3veis e de IoT. Rob tem desenvolvido aplicativos de todos os tipos h\u00e1 mais de uma d\u00e9cada, mas tem se concentrado principalmente no espa\u00e7o m\u00f3vel desde 2010. Antes de trabalhar na Couchbase, Rob trabalhou como arquiteto m\u00f3vel na Xamarin e na Microsoft."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7252","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\/34959"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7252"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7252\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/7261"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7252"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}