本文档介绍了如何将客户端与 Gmail API 同步。
在大多数应用场景中,让客户端与 Gmail 保持同步非常重要。同步方法有两种:完全同步和部分同步。在客户端首次连接到 Gmail 时以及在极少数情况下,您必须执行完全同步。如果您的客户端最近同步过,那么部分同步是完整同步的轻量级替代方案。您还可以使用推送通知来触发实时部分同步,并且仅在必要时触发,从而避免不必要的轮询。
完全同步
如果您的应用是首次连接到 Gmail,或者无法进行部分同步,则必须执行完整同步。在完全同步操作中,应用应检索并存储尽可能多的最新消息或会话,以满足您的需求。例如,如果您的应用显示最近消息的列表,您可以检索并缓存足够的消息,以便在用户滚动浏览超出前几条显示的消息时,界面能够快速响应。
请按照以下步骤执行完整同步:
调用
messages.list方法可检索第一页消息 ID。为列表请求返回的每条消息创建
messages.get方法请求的批量请求。如果您的应用显示消息内容,请在应用首次检索消息时将
format参数设置为format=full或format=raw,并缓存结果以避免额外的检索操作。如果您要检索之前缓存的消息,请使用format=minimal来减小响应的大小,因为只有labelIds可能会发生变化。将更新合并到缓存结果中。您的应用应存储最新消息(
list响应中的第一条消息)的historyId,以供将来进行部分同步。
部分同步
如果您的应用最近同步过,则可以使用 history.list 方法执行部分同步,以返回比您在请求中必须指定的 startHistoryId 查询参数更新的所有历史记录。
startHistoryId 查询参数必须设置为最近一条消息的 historyId。如需检索最近一条消息的 historyId,请使用 messages.get 或 messages.list 方法。您还可以在完全同步或部分同步期间设置该值,以供日后使用。
返回的 History 对象包含自所提供的 startHistoryId 时间以来每封邮件的消息 ID 和更改类型,例如添加邮件或修改标签。
限制
历史记录通常至少保留一周,有时会保留更长时间。 不过,记录的可用时间段可能会短得多,并且在极少数情况下,记录可能不可用。
如果客户端提供的 startHistoryId 超出了历史记录的可用范围,Gmail API 会返回 HTTP 404 错误响应。在这种情况下,您的客户端必须执行完全同步。