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