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:
- Chame
messages.list
para recuperar a primeira página de IDs de mensagens. - 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, useformat=FULL
ouformat=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, useformat=MINIMAL
para reduzir o tamanho da resposta, já que apenas olabelIds
pode mudar. - Mescle as atualizações nos resultados armazenados em cache. O app precisa armazenar
o
historyId
da mensagem mais recente (a primeira mensagem na respostalist
) 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.