Uma estrategia para não sincronizar dados todas as vezes que o aplicativo é iniciado.
Olá.
Este post não tem a pretensão de mostrar a melhor estratégia pra sincronizar dados entre a servidores na nuvem e seu aplicativo no seu device, mas pode te ajudar a ter uma ideia de como fazer isso.
Atualmente estou trabalhando em um projeto de aplicativo e estou fazendo em Delphi XE 10.2 é meu primeiro trabalho de cunho profissional (para dispositivos móveis) com esta ferramenta. No tocante a sincronizar os dados do banco de dados SQLite e o servidor na internet rodando MySQL houve a necessidade de saber quando foi a ultima vez que um outro software também feito exclusivamente para este projeto sincronizou estes dados na internet.
Para esta tarefa utilizou-se a seguinte estratégia:
- Criar uma tabela chamada SINC no servidor web chamada com os campos ID e DATA_SINC, representando o código qualquer e a data e hora que os dados forma sincronizados.
- Veja a figura:
- Em seguida foi alterado no programa importador que apos o envio dos registros, criar um registro contendo o id e data e hora na tabela SINC. Veja a Figura
- Escrever um server método na API que retorne um JSON da tabela SINC contendo os dados gerados na ultima sincronização. Atenção deve retornar apenas o ultimo registro, pra não ficar retornando dados que não serão utilizados.
- No banco SQLite do aplicativo crie uma tabela idêntica a tabela criada no passo 1.
- No aplicativo crie um método para recuperar no banco SQLite o ultimo registro da tabela de SINC.
- Compare os dados que foram retornados pela API com os dados retornados pela consulta local no aplicativo. Sendo a data do aplicativo menor que a data retornada pela API dispare o método de sincronização.
Aqui talvez a parte mais simples que pude usar neste projeto. Utilizou-se um componente chamado RestClient contém os dados básicos para acessar os server metodos, RestRequest contém os dados do próprio server métodos (parâmetros e outros mais), RestResponse contém os dados do resultado da requisição e RestResponseDataSetProvider permite conectar a requisição em um dataset que aqui neste exemplo foi usado TFDMemTable.
Em seguida grave no banco local do aplicativo os dados retornados pela API. E por ultimo, teste exaustivamente.
Até mais.
Comentários
Postar um comentário