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 gerais de 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 apenas quando necessário, evitando a sondagem desnecessária.

Índice

Sincronização completa

Na primeira vez que seu aplicativo se conecta ao Gmail ou se a sincronização parcial não estiver disponível, você precisará fazer uma sincronização completa. Em uma operação de sincronização completa, seu aplicativo precisa recuperar e armazenar o máximo de mensagens ou conversas mais recentes que forem necessárias para sua finalidade. Por exemplo, se o aplicativo mostrar uma lista de mensagens recentes, talvez seja interessante 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 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 mostrar o conteúdo da mensagem, use format=FULL ou format=RAW na primeira vez que o aplicativo 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, use format=MINIMAL para reduzir o tamanho da resposta, já que apenas labelIds pode mudar.
  3. Mescle as atualizações aos resultados armazenados em cache. Seu aplicativo precisa armazenar o historyId da mensagem mais recente (a primeira mensagem na resposta list) para uma futura sincronização parcial.

Sincronização parcial

Se o aplicativo tiver sido sincronizado recentemente, você poderá fazer uma sincronização parcial usando o método history.list para retornar todos os registros de histórico mais recentes que o startHistoryId especificado na solicitação. Os registros do histórico fornecem IDs de mensagem e o tipo de mudança de cada mensagem, como mensagem adicionada, excluída ou marcadores modificados desde a hora do startHistoryId. Você pode receber e armazenar o historyId da mensagem mais recente de uma sincronização completa ou parcial para fornecer como um startHistoryId para operações de sincronização parcial futuras.

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 ficam disponíveis pode ser significativamente menor, e eles podem ficar indisponíveis em casos raros. 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 fazer uma sincronização completa, conforme descrito na seção anterior.