O aplicativo de amostra neste repositório é chamado de Gogogiphy.
O Gogogiphy é um aplicativo de aprendizado de amostra usado com o livro "Aprenda o Visual Studio App Center com formulários Xamarin". Você pode gastar este projeto ou importar este projeto para o Azure DeVOps. Vou mostrar essas etapas no meu livro.
Como não vou gerenciar este aplicativo ou corrigir bugs daqui para frente, não envie nenhuma solicitação de tração.
Este aplicativo é usado puramente para fins de treinamento e demonstração. Ele foi projetado na estrutura de formulários Xamarin no padrão .NET usando C#.
Você encontrará 2 versões diferentes do aplicativo de amostra: Iniciar e terminar. Ambos são funcionais. O projeto na pasta Iniciar possui a maioria das funções de trabalho, exceto as funções que fazem interface com os pacotes de Nuget Center App. Essas funções são deixadas como stubs vazios. Você pode encontrar os stubs vazios no Visual Studio pesquisando "TODO". As versões de trabalho das mesmas funções podem ser encontradas na pasta de acabamento. Caso contrário, ambos os projetos são idênticos.
Em primeiro lugar, este aplicativo foi projetado usando a estrutura FreshMVVM. Se você entende o padrão de design de model-viewmodel, entende a eventual necessidade de navegação de página, uso do BindingContext das páginas XAML, injeção de dependência e práticas de inversão de controle. Não vou entrar em grandes detalhes sobre cada um desses conceitos, mas usei a estrutura do FreshMVVM porque o autor, Michael Ridland, fez um trabalho maravilhoso criando uma estrutura MVVM especificamente para formas de Xamarin e facilitou a integração em um aplicativo Xamarin Forms. Você pode encontrar mais informações em sua página do Github abaixo.
https://github.com/rid00z/freshmvvm
Você pode encontrar informações mais úteis em seu guia de início rápido em seu blog abaixo.
https://michaelridland.com/xamarin/freshmvvm-quick-start-guide/
O próximo grande kit de ferramentas que usei no aplicativo é o Xamarin Essentials. Este kit de ferramentas oferece a um desenvolvedor o poder de usar uma única API de plataforma cruzada para explorar recursos específicos de plataforma cruzada, como conectividade, bateria, quadro de transferência etc. em vez de ter que aprender cada API separadamente para Android, iOS e Windows. Você pode encontrar a página do Github para o Xamarin Essentials no site abaixo. Neste aplicativo de amostra, eu uso as APIs de conectividade, MainThread e Sistema de Arquivos. Se você decidir usar meu aplicativo de amostra como base para o seu próprio aplicativo e, se tiver mais idéias, poderá aproveitar as APIs de plataforma cruzada do Xamarin Essentials. Convido você a ler a página do Github e a documentação nos links abaixo.
https://github.com/xamarin/essentials https://docs.microsoft.com/en-us/xamarin/essentials/
James Montemagno, que tem sido uma voz importante na cena de Xamarin, há muito tempo, é um dos principais contribuintes entre uma equipe de outros colaboradores de código aberto do Xamarin Essentials. Se você não souber muito sobre ele, sempre pode seguir o blog dele abaixo, porque ele publica muitos artigos relevantes relacionados a formulários de Xamarin e outras tecnologias. Ele publica regularmente o código de exemplo a partir do qual você pode aprender.
https://montemagno.com/
Outra biblioteca crucial usada neste aplicativo de amostra é a biblioteca FFIMAGELOADING. Esta biblioteca é crucial porque oferece ao aplicativo a capacidade de exibir GIFs. Esta biblioteca está disponível em várias estruturas diferentes como Xamarin.ios, xamarin.android e, claro, xamarin.forms. Pessoalmente, adoro esta biblioteca porque você pode simplesmente conectar e reproduzir os controles, modificar algumas configurações e nunca se preocupar com isso. Encorajo você a ler mais sobre esta biblioteca à medida que você navega pelo código no aplicativo de amostra.
https://github.com/luberda-molinet/ffimageloading https://github.com/luberda-molinet/ffimageloading/wiki
Obviamente, esses GIFs precisam ser armazenados em algum lugar localmente para que o usuário possa salvar as imagens nas coleções para visualização posterior. É por isso que implementei o SQLite no projeto principal da solução, porque era fácil de implementar e fácil de aprender até para um iniciante. O pacote Nuget integrado ao projeto principal é o pacote .NET Wrapper em torno do cliente SQLite. Você pode encontrar mais informações nos links abaixo.
https://github.com/praeclarum/sqlite-nalt https://www.nuget.org/packages/sqlite-nalt-pcl https://www.sqlite.org/index.html
Por fim, a estrutura importante final a ser aprendida é o JSON.NET. Se você já desenvolveu um site ou um projeto de API da Web ou um aplicativo móvel, a JavaScript Object Notation (JSON) se tornou nossa carga útil de escolha, porque é fácil de usar, fácil de ler e fácil de serializar ou desserializar em um objeto .NET. Se você é novo no JSON.NET, encorajo você a ler a documentação no site deles abaixo.
https://www.newtonsoft.com/json https://www.newtonsoft.com/json/help/
Siga estas etapas simples para obter o valor secreto do aplicativo para o iOS.
Siga estas etapas simples para obter o valor secreto do aplicativo para o Android.
Siga estas etapas simples para configurar sua conta Giphy.
Vá para o site a seguir, configure uma conta Giphy do desenvolvedor e vá para o seu painel.
https://developers.giphy.com
Configure um novo aplicativo em sua conta. Você encontrará seu aplicativo listado em "seus aplicativos". E sua chave da API é dada dentro.
Copie o valor e substitua o valor da string "giphyapikey" na variável APIKEY na configuração.cs.
CUIDADO
Não é seguro comprometer seu aplicativo segredo e seus valores de chave da API no controle de origem, simplesmente comprometendo as alterações na classe Configurações como elas existem atualmente. Você pode usar as etapas descritas acima para que o aplicativo seja executado localmente nos seus simuladores iOS e Android. Mas mostrarei a você no livro sobre quais etapas são necessárias para evitar cometer valores secretos e teclas de API no controle de origem e obter o Centro de App para substituir esses valores para você dinamicamente antes de cada construção.