Como sincronizar clientes com o Gmail

Manter o cliente sincronizado com o Gmail é importante para a maioria dos cenários de aplicativos. Há dois cenários de sincronização geral: sincronização completa e 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 foi sincronizado recentemente, a sincronização parcial é uma alternativa mais leve do que uma sincronização completa. Você também pode 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 o app se conectar ao Gmail ou se a sincronização parcial não estiver disponível, será necessário realizar uma sincronização completa. Em uma operação de sincronização completa, seu app precisa recuperar e armazenar o máximo de mensagens ou linhas de execução mais recentes que forem necessárias para sua finalidade. Por exemplo, se o app mostra uma lista de mensagens recentes, é possível recuperar e armazenar em cache mensagens suficientes para permitir uma interface responsiva se o usuário rolar além das primeiras mensagens exibidas. O procedimento geral para realizar uma operação de sincronização completa é o seguinte:

  1. Chame messages.list para extrair 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 app mostrar o conteúdo da mensagem, 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 armazenada em cache anteriormente, 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. Seu app precisa armazenar o historyId da mensagem mais recente (a primeira mensagem na resposta list) para futuras sincronizações parciais.

Sincronização parcial

Se o app tiver sido sincronizado recentemente, será possível realizar uma sincronização parcial usando o método history.list para retornar todos os registros de histórico mais recentes do que o startHistoryId especificado na solicitação. Os registros de histórico fornecem IDs de mensagem e o tipo de mudança de cada mensagem, como mensagens adicionadas, excluídas ou marcadores modificados desde o momento do startHistoryId. É possível receber e armazenar o historyId da mensagem mais recente de uma sincronização completa ou parcial para fornecer como startHistoryId para futuras operações de sincronização parcial.

Limitações

Os registros de histórico geralmente ficam disponíveis por pelo menos uma semana e, muitas vezes, por mais tempo. No entanto, o período em que os registros estão disponíveis pode ser significativamente menor e, em casos raros, eles podem estar indisponíveis. Se o startHistoryId fornecido pelo cliente estiver fora do intervalo disponível de registros de histórico, a API vai retornar uma resposta de erro HTTP 404. Nesse caso, o cliente precisa realizar uma sincronização completa, conforme descrito na seção anterior.