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:
- Chame
messages.list
para extrair 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 app mostrar o conteúdo da mensagem, 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 armazenada em cache anteriormente, useformat=MINIMAL
para reduzir o tamanho da resposta, já que apenas olabelIds
pode mudar. - Mescle as atualizações nos resultados armazenados em cache. Seu app precisa armazenar
o
historyId
da mensagem mais recente (a primeira mensagem na respostalist
) 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.