Implementando Live Query em Aplicativos Android com Back4App
11 min
aplicação em tempo real usando consultas ao vivo introdução consultas ao vivo são destinadas a serem usadas em aplicações reativas em tempo real , onde apenas usar o paradigma de consulta tradicional traria alguns problemas, como aumento do tempo de resposta e alto uso de rede e servidor consultas ao vivo devem ser usadas em casos onde você precisa atualizar continuamente uma página com dados frescos vindos do banco de dados, o que frequentemente acontece em, mas não se limita a, jogos online, clientes de mensagens e listas de tarefas compartilhadas esta seção explica como usar a consulta ao vivo do back4app em um ambiente android através de back4app https //www back4app com/ este tutorial usa um aplicativo básico criado no android studio arctic fox 2020 3 1 patch 1 com compilesdk 30 compilesdk 30 , minsdk 21 minsdk 21 e targetsdk 30 targetsdk 30 a qualquer momento, você pode acessar o projeto completo através de nossos repositórios no github repositório de exemplo em kotlin https //github com/templates back4app/android crud operations kotlin repositório de exemplo em java https //github com/templates back4app/android crud operations java objetivo aqui está uma prévia do que vamos alcançar pré requisitos para completar este tutorial, precisamos android studio https //developer android com/studio/index html um aplicativo criado no back4app nota siga o tutorial de novo aplicativo parse https //www back4app com/docs/get started/new parse app para aprender como criar um aplicativo parse no back4app um aplicativo android conectado ao back4app nota siga o tutorial de instalação do sdk parse https //www back4app com/docs/android/parse android sdk para criar um projeto android studio conectado ao back4app um dispositivo (ou dispositivo virtual https //developer android com/studio/run/managing avds html ) rodando android 4 1 (jelly bean) ou mais recente 1 ativar live query antes de começar a codificar, é necessário ter uma classe em seu banco de dados para ativar o live query para fazer isso, basta encontrar seu aplicativo em site do back4app https //www back4app com/ , e clicar em painel painel > criar uma classe criar uma classe , como mostrado aqui agora, para habilitar o recurso de consulta ao vivo, faça login na sua conta em site do back4app https //www back4app com/ , encontre seu aplicativo e clique em configurações do servidor configurações do servidor , em seguida, encontre o bloco “url do servidor e consulta ao vivo” e clique em configurações configurações então, você chegará a uma página como a abaixo nessa página, você precisará marcar a ativar seu subdomínio back4app ativar seu subdomínio back4app opção, a ativar live query ativar live query opção e todas as classes que você deseja que o live query seja ativado, como mostrado abaixo é necessário ativar webhosting para usar live queries, porque seu domínio funcionará como o servidor ao vivo nota para saber mais sobre webhosting, veja tutorial de webhosting do back4app https //www back4app com/docs/platform/activating web hosting 2 configurar o cliente livequery github oficial do parse server https //github com/parse community tem uma implementação do cliente live query para android https //github com/parse community/parselivequery android é necessário implementar o cliente live query oficial, que funciona bem para fazer isso, adicione as seguintes linhas ao seu app/build gradle app/build gradle arquivo, na seção de dependências e sincronize seu projeto app/build gradle 1 dependencies { 2 3 // don't forget to change the line below with the latest version of parse sdk for android 4 implementation "com github parse community parse sdk android\ parse 1 26 0" 5 implementation 'com github parse community\ parselivequery android 1 2 2' 6 7 } neste projeto, também criaremos uma classe chamada mensagem mensagem , que conterá nossas mensagens 3 inscreva se na sua consulta para começar a usar consultas ao vivo, primeiro crie um livequeryclient livequeryclient que gerenciará as conexões websocket para você para fazer isso, você terá que fornecer o id do aplicativo, a chave javascript e também uma url do servidor de live query que você configurou no primeiro passo 1 parse initialize(new parse configuration builder(this) 2 applicationid(getstring(r string back4app app id)) 3 clientkey(getstring(r string back4app client key)) 4 server(getstring(r string back4app server url)) 5 build());1 parse initialize(parse configuration builder(this) 2 applicationid(getstring(r string back4app app id)) 3 clientkey(getstring(r string back4app client key)) 4 server(getstring(r string back4app server url)) 5 build()) o código para inicializar livequeryclient livequeryclient é o seguinte 1 parselivequeryclient parselivequeryclient = parselivequeryclient factory getclient();1 val parselivequeryclient = parselivequeryclient factory getclient() temos um adaptador recyclerview chamado messageadapter messageadapter as funções do messageadapter são acionadas quando um objeto é adicionado, excluído ou atualizado aqui estão as nossas messageadapter messageadapter funções 1 public void additem(parseobject t) { 2 this list add(t); 3 notifyiteminserted(list size() 1); 4 } 5 6 public void removeitem(parseobject object) { 7 for (int i = 0; i < list size(); i++) { 8 if (list get(i) getobjectid() equals(object getobjectid())){ 9 list remove(i); 10 notifyitemremoved(i); 11 notifyitemrangechanged(i, list size()); 12 return; 13 } 14 } 15 } 16 public void updateitem(parseobject object) { 17 for (int i = 0; i < list size(); i++) { 18 if (list get(i) getobjectid() equals(object getobjectid())){ 19 list set(i,object); 20 notifydatasetchanged(); 21 return; 22 } 23 } 24 }1 fun additem(t parseobject?) { 2 list!! add(t!!) 3 notifydatasetchanged() 4 } 5 6 fun removeitem(`object` parseobject) { 7 for (i in list!! indices) { 8 if (list!!\[i] objectid == `object` objectid) { 9 list!! removeat(i) 10 notifyitemremoved(i) 11 notifyitemrangechanged(i, list!! size) 12 return 13 } 14 } 15 } 16 17 fun updateitem(`object` parseobject) { 18 for (i in list!! indices) { 19 if (list!!\[i] objectid == `object` objectid) { 20 list!!\[i] = `object` 21 notifydatasetchanged() 22 return 23 } 24 } 25 } então, você deve criar um parsequery parsequery para qual tipo de objeto você deseja se inscrever uma assinatura é um emissor de eventos, que disparará eventos quando mudanças ocorrerem em um objeto que satisfaça sua consulta neste exemplo, você fará uma consulta básica e se inscreverá em todas as mudanças feitas nos message message objetos veja mais sobre consultas e assinaturas em documentação oficial de consultas do parse http //docs parseplatform org/android/guide/#queries 1 parsequery\<parseobject> parsequery = new parsequery<>("message"); 2 subscriptionhandling = parselivequeryclient subscribe(parsequery); 3 subscriptionhandling handlesubscribe(q > { 4 subscriptionhandling handleevent(subscriptionhandling event create, (query, object) > { 5 mainactivity this runonuithread(() > { 6 messagesadapter additem(object); 7 }); 8 }); 9 subscriptionhandling handleevent(subscriptionhandling event delete, (query, object) > { 10 mainactivity this runonuithread(() > { 11 messagesadapter removeitem(object); 12 }); 13 }); 14 subscriptionhandling handleevent(subscriptionhandling event update, (query, object) > { 15 mainactivity this runonuithread(() > { 16 messagesadapter updateitem(object); 17 }); 18 }); 19 });1 val parsequery = parsequery\<parseobject>("message") 2 subscriptionhandling = parselivequeryclient!! subscribe(parsequery) 3 subscriptionhandling!! handlesubscribe { subscriptionhandling!! handleevent(subscriptionhandling event create 4 ) { parsequery\<parseobject?>?, `object` parseobject? > 5 runonuithread { messagesadapter!! additem(`object`) } 6 } 7 subscriptionhandling!! handleevent(subscriptionhandling event delete 8 ) { parsequery\<parseobject?>?, `object` parseobject? > 9 runonuithread { messagesadapter!! removeitem(`object`!!) } 10 } 11 subscriptionhandling!! handleevent(subscriptionhandling event update 12 ) { parsequery\<parseobject?>?, `object` parseobject? > 13 runonuithread { messagesadapter!! updateitem(`object`!!) } 14 } 15 } nota estamos acionando todos esses eventos no aplicativo você também pode acionar esses eventos de criar, atualizar e excluir a partir do back4app (da tabela ou console javascript) está feito! neste ponto, você tem o conhecimento de como usar consultas ao vivo para fazer aplicativos reativos em tempo real em um ambiente android e também como configurar consultas ao vivo usando o back4app agora você pode começar a implementá lo em seu próprio aplicativo agora você está pronto para explorar os recursos principais do parse server https //www back4app com/product/parse server e os complementos do back4app https //www back4app com/product/addons