Como sincronizar clientes com o Gmail

Manter seu cliente sincronizado com o Gmail é importante para a maioria dos cenários de aplicativos. Há dois cenários de sincronização gerais: sincronização completa e sincronização parcial. A sincronização completa é necessária na primeira vez que o cliente se conecta ao Gmail e em alguns outros cenários raros. Se o cliente fez a sincronização recentemente, a sincronização parcial é uma alternativa mais leve à sincronização completa. Também é possível usar notificações push para acionar a sincronização parcial em tempo real e somente quando necessário, evitando pesquisas desnecessárias.

Conteúdo

Sincronização completa

Na primeira vez que seu aplicativo se conectar ao Gmail ou se a sincronização parcial não estiver disponível, você precisará executar uma sincronização completa. Em uma operação de sincronização completa, seu aplicativo precisa recuperar e armazenar o máximo necessário de mensagens ou linhas de execução mais recentes para seu objetivo. Por exemplo, se o aplicativo exibir uma lista de mensagens recentes, recupere e armazene mensagens em cache um número suficiente de mensagens para permitir uma interface responsiva caso o usuário role além das primeiras mensagens exibidas. O procedimento geral para executar uma operação de sincronização completa é o seguinte:

  1. Chame messages.list para recuperar a primeira página de IDs de mensagens.
  2. Crie uma solicitação em lote de solicitações messages.get para cada uma das mensagens retornadas pela solicitação de lista. Se o aplicativo exibir conteúdo de mensagens, use format=FULL ou format=RAW na primeira vez que ele recuperar uma mensagem e armazene os resultados em cache para evitar outras operações de recuperação. Se você estiver recuperando uma mensagem que já foi armazenada em cache, use format=MINIMAL para reduzir o tamanho da resposta, já que apenas o labelIds pode mudar.
  3. Mescle as atualizações nos resultados armazenados em cache. O app precisa armazenar o historyId da mensagem mais recente (a primeira mensagem na resposta list) para sincronização parcial futura.

Sincronização parcial

Caso seu aplicativo tenha sido sincronizado recentemente, é possível executar uma sincronização parcial usando o método history.list para retornar todos os registros do histórico mais recentes que o startHistoryId especificado na solicitação. Os registros do histórico mostram IDs das mensagens e o tipo de alteração de cada mensagem, como mensagens adicionadas, excluídas ou marcadores modificados desde o momento de startHistoryId. Você pode receber e armazenar a historyId da mensagem mais recente de uma sincronização completa ou parcial para fornecer como um startHistoryId para operações futuras de sincronização parcial.

Limitações

Os registros históricos normalmente ficam disponíveis por pelo menos uma semana e muitas vezes por mais tempo. No entanto, o período para o qual os registros ficam disponíveis pode ser significativamente menor, e às vezes os registros podem ficar indisponíveis em casos raros. Se o startHistoryId fornecido pelo seu cliente estiver fora do intervalo disponível de registros de histórico, a API retornará uma resposta de erro HTTP 404. Nesse caso, seu cliente precisa executar uma sincronização completa, conforme descrito na seção anterior.