Синхронизация клиентов с Gmail

Синхронизация клиента с Gmail важна для большинства сценариев использования. Существует два основных сценария синхронизации: полная и частичная. Полная синхронизация требуется при первом подключении клиента к Gmail и в некоторых других редких случаях. Если ваш клиент недавно синхронизировался, частичная синхронизация — это более лёгкая альтернатива полной синхронизации. Вы также можете использовать push-уведомления для запуска частичной синхронизации в режиме реального времени и только при необходимости, избегая тем самым ненужных опросов.

Содержание

Полная синхронизация

При первом подключении вашего приложения к Gmail или если частичная синхронизация недоступна, необходимо выполнить полную синхронизацию. При полной синхронизации ваше приложение должно извлекать и сохранять столько последних сообщений или цепочек сообщений, сколько необходимо для вашей цели. Например, если ваше приложение отображает список последних сообщений, вам может потребоваться извлекать и кэшировать достаточное количество сообщений, чтобы обеспечить адаптивный интерфейс, если пользователь прокручивает страницу дальше первых нескольких отображаемых сообщений. Общая процедура выполнения полной синхронизации выглядит следующим образом:

  1. Вызовите messages.list , чтобы получить первую страницу идентификаторов сообщений.
  2. Создайте пакетный запрос messages.get для каждого сообщения, возвращаемого запросом списка. Если ваше приложение отображает содержимое сообщения, следует использовать format=FULL или format=RAW при первом извлечении сообщения и кэшировать результаты, чтобы избежать дополнительных операций извлечения. Если вы извлекаете ранее кэшированное сообщение, следует использовать format=MINIMAL чтобы уменьшить размер ответа, поскольку могут измениться только labelIds .
  3. Объедините обновления с кэшированными результатами. Ваше приложение должно сохранять historyId последнего сообщения (первого сообщения в list ответов) для будущей частичной синхронизации.

Частичная синхронизация

Если ваше приложение недавно синхронизировалось, вы можете выполнить частичную синхронизацию с помощью метода history.list , чтобы вернуть все записи истории, более новые, чем startHistoryId , указанный в запросе. Записи истории содержат идентификаторы сообщений и тип изменения для каждого сообщения, например, добавление, удаление или изменение меток с момента startHistoryId . Вы можете получить и сохранить historyId самого последнего сообщения из полной или частичной синхронизации, чтобы использовать его в качестве startHistoryId для будущих операций частичной синхронизации.

Ограничения

Записи истории обычно доступны как минимум за одну неделю, а часто и дольше. Однако период, за который доступны записи, может быть значительно короче, а в редких случаях записи могут быть недоступны. Если предоставленный клиентом startHistoryId выходит за пределы доступного диапазона записей истории, API возвращает ошибку HTTP 404 В этом случае клиент должен выполнить полную синхронизацию, как описано в предыдущем разделе.