Gmail과 클라이언트 동기화

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

목차

전체 동기화

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

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

부분 동기화

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

제한사항

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