将客户端与 Gmail 同步

对于大多数应用场景,确保客户端与 Gmail 保持同步非常重要。总体同步场景有两种:完全同步和部分同步。客户端首次连接到 Gmail 时以及一些其他极少数情况,都需要完全同步。如果您的客户端最近进行了同步,则部分同步是完全同步的更轻量级替代方案。您还可以使用推送通知,仅在必要时实时触发部分同步,从而避免不必要的轮询。

目录

完全同步

当应用首次连接到 Gmail,或者部分同步不可用时,您必须执行完全同步。在执行完整的同步操作中,您的应用应根据需要检索和存储尽可能多的最新消息或线程。例如,如果您的应用会显示最近的消息列表,您可能需要检索并缓存足够的消息,以便在用户滚动到前几条消息之外时显示响应式界面。执行完全同步操作的一般步骤如下:

  1. 调用 messages.list 以检索第一页消息 ID。
  2. 为列表请求返回的每条消息创建 messages.get 请求的批量请求。如果您的应用显示消息内容,您应在应用首次检索消息时使用 format=FULLformat=RAW,并缓存结果以避免额外的检索操作。如果您要检索之前缓存的消息,则应使用 format=MINIMAL 减小响应大小,因为只有 labelIds 可能会发生变化。
  3. 将更新合并到缓存的结果中。您的应用应存储最新消息(list 响应中的第一条消息)的 historyId,以供未来部分同步使用。

部分同步

如果您的应用最近进行了同步,您可以使用 history.list 方法执行部分同步,以返回比您在请求中指定的 startHistoryId 更新的所有历史记录记录。历史记录提供每条消息的消息 ID 和更改类型,例如自 startHistoryId 以来添加、删除的消息或修改的标签。您可以从完整或部分同步中获取并存储最新消息的 historyId,将其作为 startHistoryId 提供给未来的部分同步操作。

限制

历史记录通常至少保留一周时间,通常更长时间。但是,记录可用的时间段可能会明显减少,并且在极少数情况下,记录可能有时不可用。如果客户端提供的 startHistoryId 不在历史记录记录的可用范围内,则 API 会返回 HTTP 404 错误响应。在这种情况下,您的客户端必须按照上一部分中所述执行完全同步。