A importância de desenvolver considerando off-line first

Você está em casa à noite e resolve baixar um jogo no seu smartphone. Depois de algumas horas jogando, é hora de ir dormir porque no dia seguinte você tem um voo para pegar. Logo após a decolagem você resolve passar mais uma fase daquele joguinho que instalou. Ao abrir o aplicativo, você se depara

Você está em casa à noite e resolve baixar um jogo no seu smartphone. Depois de algumas horas jogando, é hora de ir dormir porque no dia seguinte você tem um voo para pegar. Logo após a decolagem você resolve passar mais uma fase daquele joguinho que instalou. Ao abrir o aplicativo, você se depara com a necessidade de conexão com a internet para jogar (e muitas vezes até para abrir o jogo).

Isso não é “privilégio” apenas de jogos e acontece com frequência porque boa parte das aplicações dependem da conexão à internet para funcionar (mesmo aquelas que foram baixadas previamente). Muitas vezes isso é desnecessário pois a aplicação que envia pequenos pacotes de dados poderia acumular esses pacotes caso estivesse sem uma conexão disponível no momento.

Foi com esse intuito, de promover a criação de aplicações que funcionem também off-line, que estão surgindo iniciativas para auxiliar o desenvolvimento de apps que sobrevivam quando você estiver em um túnel, no avião ou no meio de uma trilha na floresta. Uma delas é a Off-line first, que defende que sua aplicação deve estar pronta para cenários sem acesso a internet. Essas iniciativas fazem uso de recursos e documentação que já estamos acostumados a acompanhar, mas nem sempre com esse viés de garantir o funcionamento sem internet.

Um dos pontos fundamentais para o funcionamento de aplicações Web rodarem off-line é garantir que seja possível acessa-las em cache. Pode parecer desnecessário e redundante falar isso em pleno 2015, mas ainda existem aplicações que não armazenam dados em cache.

Dentro da documentação do HTML5 existe um tópico dedicado exclusivamente para aplicações Web off-line. Para ilustrar essa documentação, o próprio W3C mostra um exemplo simples de uma aplicação de um relógio, e como adicionar o manifest de forma adequada. O exemplo desse relógio está disponível na página do WHATWG.

Além disso, temos em nosso favor a Web Storage API, que nos possibilita armazenar dados da aplicação no client side.

A preocupação em garantir o funcionamento de aplicações off-line não é está apenas dentro das recomendações do W3C. O Google tem uma área interessante sobre a criação de apps off-line first. O documento começa com algumas dicas fundamentais para a criação do aplicativos:

  • Os arquivos do aplicativo – JavaScript, CSS e fontes, além de outros recursos necessários (como imagens) já foram baixados.
  • Seu aplicativo pode salvar e sincronizar (de forma opcional) pequenas quantidades de dados.
  • Seu aplicativo pode detectar mudanças na conectividade.

Mesmo que essas dicas sejam insuficientes, o Google recomenda seguir algumas regras para isso:

  • Use dados locais sempre que possível
  • Separe UI (User Interface) dos dados da sua aplicação
  • Suponha que seu aplicativo pode ser fechado a qualquer momento.
  • Teste seu aplicativo cuidadosamente.

A Mozilla também tem documentação muito interessante sobre a construção de aplicações desconectadas da internet. Lá também estão algumas recomendações para o desenvolvimento de uma boa aplicação off-line. Basicamente a documentação recomenda o seguinte:

  • A aplicação deve detectar o estado “off-line

    Já existem APIs que determinam o status de conexão do usuário, sem a necessidade de HTTP request.

  • Armazenamento de “data and assetsoff-line

    Garanta que o armazenamento de dados possa ser feito no dispositivo do usuário.

  • Salve os status da aplicação periodicamente

    Durante o uso da aplicação, considere salvar periodicamente o status no dispositivo do usuário.

  • Sincronize com o servidor

    A aplicação deve enviar periodicamente os dados para o servidor. Quando não conseguir, ela pode fazer o armazenamento no dispositivo do usuário e enviar quando possível. Considere construir uma solução para organizar a fila de pacotes quando a conectividade cair.

Mesmo sabendo que a conectividade vem aumentando e melhorando de forma exponencial, vale a pena planejar o uso da sua aplicação em um cenário sem internet. Em um país com proporções continentais como o Brasil e com um percentual de 84% da população com telefone celular (dados do Cetic.br de 2014), é fundamental que a aplicação não se limite apenas a momentos em que o usuário esteja conectado (claro que isso não é possível em todas as aplicações). A Web móvel é uma realidade e a mobilidade nos deixa sujeitos a oscilações de conectividade. E nossas aplicações devem estar prontas para isso.

Boas referências para estudo:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *