Синхронизация клиентов с 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 . В этом случае ваш клиент должен выполнить полную синхронизацию, как описано в предыдущем разделе.

,

Синхронизация вашего клиента с 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 . В этом случае ваш клиент должен выполнить полную синхронизацию, как описано в предыдущем разделе.