Синхронизация клиента с Gmail важна для большинства сценариев использования. Существует два основных сценария синхронизации: полная и частичная. Полная синхронизация требуется при первом подключении клиента к Gmail и в некоторых других редких случаях. Если ваш клиент недавно синхронизировался, частичная синхронизация — это более лёгкая альтернатива полной синхронизации. Вы также можете использовать push-уведомления для запуска частичной синхронизации в режиме реального времени и только при необходимости, избегая тем самым ненужных опросов.
Содержание
Полная синхронизация
При первом подключении вашего приложения к Gmail или если частичная синхронизация недоступна, необходимо выполнить полную синхронизацию. При полной синхронизации ваше приложение должно извлекать и сохранять столько последних сообщений или цепочек сообщений, сколько необходимо для вашей цели. Например, если ваше приложение отображает список последних сообщений, вам может потребоваться извлекать и кэшировать достаточное количество сообщений, чтобы обеспечить адаптивный интерфейс, если пользователь прокручивает страницу дальше первых нескольких отображаемых сообщений. Общая процедура выполнения полной синхронизации выглядит следующим образом:
- Вызовите
messages.list
, чтобы получить первую страницу идентификаторов сообщений. - Создайте пакетный запрос
messages.get
для каждого сообщения, возвращаемого запросом списка. Если ваше приложение отображает содержимое сообщения, следует использоватьformat=FULL
илиformat=RAW
при первом извлечении сообщения и кэшировать результаты, чтобы избежать дополнительных операций извлечения. Если вы извлекаете ранее кэшированное сообщение, следует использоватьformat=MINIMAL
чтобы уменьшить размер ответа, поскольку могут измениться толькоlabelIds
. - Объедините обновления с кэшированными результатами. Ваше приложение должно сохранять
historyId
последнего сообщения (первого сообщения вlist
ответов) для будущей частичной синхронизации.
Частичная синхронизация
Если ваше приложение недавно синхронизировалось, вы можете выполнить частичную синхронизацию с помощью метода history.list
, чтобы вернуть все записи истории, более новые, чем startHistoryId
, указанный в запросе. Записи истории содержат идентификаторы сообщений и тип изменения для каждого сообщения, например, добавление, удаление или изменение меток с момента startHistoryId
. Вы можете получить и сохранить historyId
самого последнего сообщения из полной или частичной синхронизации, чтобы использовать его в качестве startHistoryId
для будущих операций частичной синхронизации.
Ограничения
Записи истории обычно доступны как минимум за одну неделю, а часто и дольше. Однако период, за который доступны записи, может быть значительно короче, а в редких случаях записи могут быть недоступны. Если предоставленный клиентом startHistoryId
выходит за пределы доступного диапазона записей истории, API возвращает ошибку HTTP 404
В этом случае клиент должен выполнить полную синхронизацию, как описано в предыдущем разделе.