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