클라이언트를 Gmail과 동기화하는 것은 대부분의 애플리케이션 시나리오에서 중요합니다. 전체 동기화와 부분 동기화라는 두 가지 전체 동기화 시나리오가 있습니다. 클라이언트가 Gmail에 처음 연결될 때와 드문 다른 시나리오에서는 전체 동기화가 필요합니다. 클라이언트가 최근에 동기화된 경우 부분 동기화는 전체 동기화보다 가벼운 대안입니다. 푸시 알림을 사용하여 필요할 때만 실시간으로 부분 동기화를 트리거하여 불필요한 폴링을 방지할 수도 있습니다.
목차
전체 동기화
애플리케이션이 Gmail에 처음 연결되거나 부분 동기화를 사용할 수 없는 경우 전체 동기화를 실행해야 합니다. 전체 동기화 작업에서 애플리케이션은 목적에 필요한 만큼의 최신 메시지나 스레드를 검색하고 저장해야 합니다. 예를 들어 애플리케이션에 최근 메시지 목록이 표시되는 경우 사용자가 표시된 처음 몇 개의 메시지를 지나 스크롤할 때 반응형 인터페이스를 지원할 수 있도록 충분한 메시지를 가져와 캐시할 수 있습니다. 전체 동기화 작업을 실행하는 일반적인 절차는 다음과 같습니다.
messages.list
를 호출하여 메시지 ID의 첫 번째 페이지를 가져옵니다.- 목록 요청에서 반환된 각 메시지에 대해
messages.get
요청의 일괄 요청을 만듭니다. 애플리케이션이 메시지 콘텐츠를 표시하는 경우 애플리케이션이 처음 메시지를 가져올 때format=FULL
또는format=RAW
를 사용하고 추가 검색 작업을 방지하기 위해 결과를 캐시해야 합니다. 이전에 캐시된 메시지를 가져오는 경우labelIds
만 변경될 수 있으므로format=MINIMAL
를 사용하여 응답 크기를 줄여야 합니다. - 업데이트를 캐시된 결과에 병합합니다. 애플리케이션은 향후 부분 동기화를 위해 최신 메시지의
historyId
(list
응답의 첫 번째 메시지)를 저장해야 합니다.
부분 동기화
애플리케이션이 최근에 동기화된 경우 history.list
메서드를 사용하여 요청에 지정한 startHistoryId
보다 최신인 모든 기록 레코드를 반환하는 부분 동기화를 실행할 수 있습니다. 기록 레코드에는 startHistoryId
이후 메시지 추가, 삭제, 라벨 수정 등 각 메시지의 메시지 ID와 변경 유형이 제공됩니다. 전체 또는 부분 동기화에서 최신 메시지의 historyId
를 가져와 저장하여 향후 부분 동기화 작업의 startHistoryId
로 제공할 수 있습니다.
제한사항
기록은 일반적으로 최소 1주일 동안 제공되며 그 이상인 경우도 많습니다. 하지만 기록을 사용할 수 있는 기간이 훨씬 짧을 수 있으며 드물게 기록을 사용할 수 없는 경우도 있습니다. 클라이언트에서 제공한 startHistoryId
이 사용 가능한 기록 범위 밖에 있는 경우 API는 HTTP 404
오류 응답을 반환합니다. 이 경우 클라이언트는 이전 섹션에 설명된 대로 전체 동기화를 실행해야 합니다.