Prévia do material em texto
GUIA TÉCNICO 04 • DADOS E CONECTIVIDADE Persistência de Dados e Estratégias Offline-First Armazenamento local estruturado, resiliência à perda de rede e sincronização distribuída A conectividade móvel é inerentemente instável: túneis, elevadores, áreas rurais e congestionamentos de rede interrompem requisições a qualquer instante. Projetar um aplicativo com mentalidade Offline-First significa tratar o armazenamento local como a única fonte de verdade para a interface, sincronizando alterações com o servidor de forma assíncrona. 1. Mecanismos de Armazenamento Local Categoria Tecnologias Comuns Uso Adequado e Limitações Chave-Valor Simples UserDefaults (iOS) DataStore / SharedPreferences Preferências leves do usuário, flags de visualização e configurações. Não adequado para grandes volumes ou consultas complexas. Banco Relacional SQLite, Room (Android), GRDB Dados estruturados com relacionamentos, índices, transações ACID e consultas analíticas rápidas. Grafo de Objetos SwiftData, Core Data, Realm Mapeamento direto de modelos orientados a objetos com observação reativa de mudanças no ciclo de vida. Sistema de Arquivos FileManager / Internal Storage Arquivos binários grandes, imagens em cache, documentos PDF e mídias baixadas para leitura offline. 2. Arquitetura de Sincronização Em um fluxo Offline-First, a tela nunca aguarda a resposta da rede para exibir informações já conhecidas ou confirmar ações do usuário: Leitura Reativa (Single Source of Truth): A interface observa diretamente consultas do banco local. Quando uma chamada de rede traz dados novos, o repositório grava o resultado no banco local, que notifica automaticamente a tela. Fila de Mutação (Outbox Pattern): Operações de criação, edição ou exclusão realizadas sem internet são persistidas localmente com um estado pendente e enviadas em lote por tarefas em segundo plano (WorkManager no Android / BGTaskScheduler no iOS) assim que a conexão retorna. Identificadores Universais (UUIDs): Gerar chaves primárias UUID v4 no próprio cliente permite criar registros localmente e relacioná-los antes mesmo de obter confirmação do servidor. Série Desenvolvimento Mobile • Módulo 04 Page 1 of 2 3. Resolução de Conflitos e Migrações Quando dois dispositivos modificam o mesmo registro offline antes de sincronizar, ocorre um conflito de versão. Estratégias comuns incluem Last-Write-Wins (baseada em carimbos de tempo sincronizados pelo servidor), mesclagem granular por campo modificado ou delegação da escolha ao usuário em documentos colaborativos. Além disso, evoluir o esquema do banco local exige planejamento rigoroso: toda alteração de tabela ou coluna deve possuir scripts explícitos de migração testados para evitar perda de dados acumulados no aparelho do usuário durante atualizações do aplicativo. Boas Práticas de Cache: Defina políticas claras de expiração (TTL) e limites máximos de armazenamento para dados em cache, evitando que o aplicativo consuma espaço excessivo no dispositivo ou exiba informações financeiras e operacionais obsoletas. Série Desenvolvimento Mobile • Módulo 04 Page 2 of 2