Gmail과 클라이언트 동기화

대부분의 애플리케이션 시나리오에서는 클라이언트를 Gmail과 동기화된 상태로 유지하는 것이 중요합니다. 전반적인 동기화 시나리오에는 전체 동기화와 부분 동기화, 두 가지가 있습니다. 클라이언트가 Gmail에 처음 연결할 때와 그 밖의 드문 경우 전체 동기화가 필요합니다. 클라이언트가 최근에 동기화되었다면 부분 동기화는 전체 동기화보다 가벼운 대안입니다. 또한 푸시 알림을 사용하여 필요한 경우에만 실시간으로 부분 동기화를 트리거하므로 불필요한 폴링을 피할 수 있습니다.

목차

전체 동기화

애플리케이션이 Gmail에 처음 연결될 때 또는 부분 동기화를 사용할 수 없는 경우 전체 동기화를 수행해야 합니다. 전체 동기화 작업에서 애플리케이션은 용도에 필요한 최신 메시지 또는 스레드를 최대한 많이 검색하고 저장해야 합니다. 예를 들어 애플리케이션이 최근 메시지 목록을 표시하는 경우, 사용자가 표시된 처음 몇 개의 메시지를 넘어 스크롤할 경우 반응형 인터페이스를 사용할 수 있도록 충분한 메시지를 검색하고 캐시하는 것이 좋습니다. 전체 동기화 작업을 수행하는 일반적인 절차는 다음과 같습니다.

  1. messages.list를 호출하여 메시지 ID의 첫 페이지를 가져옵니다.
  2. 목록 요청에서 반환된 각 메시지에 대해 messages.get 요청의 일괄 요청을 생성합니다. 애플리케이션이 메시지 콘텐츠를 표시하는 경우, 추가 검색 작업을 방지하기 위해 애플리케이션이 메시지를 처음 검색할 때 format=FULL 또는 format=RAW를 사용하고 결과를 캐시해야 합니다. 이전에 캐시된 메시지를 검색하는 경우 labelIds만 변경될 수 있으므로 format=MINIMAL를 사용하여 응답의 크기를 줄여야 합니다.
  3. 캐시된 결과에 업데이트를 병합합니다. 애플리케이션은 향후 부분 동기화를 위해 가장 최근 메시지의 historyId (list 응답의 첫 번째 메시지)를 저장해야 합니다.

부분 동기화

애플리케이션이 최근에 동기화된 경우 history.list 메서드를 사용하여 부분 동기화를 수행하여 요청에 지정한 startHistoryId보다 최신인 모든 기록 레코드를 반환할 수 있습니다. 기록 레코드는 메시지 ID와 각 메시지의 변경사항 유형(예: 추가된 메시지, 삭제됨, startHistoryId 이후 수정된 라벨)을 제공합니다. 전체 또는 부분 동기화에서 최근 메시지의 historyId를 가져와서 저장하여 향후 부분 동기화 작업을 위한 startHistoryId로 제공할 수 있습니다.

제한사항

기록 기록은 일반적으로 최소 1주일 동안 사용할 수 있으며 그 이상도 사용할 수 있습니다. 그러나 레코드를 사용할 수 있는 기간이 훨씬 짧을 수 있으며 드물지만 레코드를 사용하지 못하는 경우도 있습니다. 클라이언트에서 제공된 startHistoryId가 사용 가능한 기록 레코드 범위를 벗어나면 API는 HTTP 404 오류 응답을 반환합니다. 이 경우 클라이언트는 이전 섹션에 설명된 대로 전체 동기화를 수행해야 합니다.