Gmail과 고객 동기화하기

이 문서에서는 Gmail API를 사용하여 클라이언트를 동기화하는 방법을 설명합니다.

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

전체 동기화

앱이 Gmail에 처음 연결되거나 부분 동기화를 사용할 수 없는 경우 전체 동기화를 실행해야 합니다. 전체 동기화 작업에서 앱은 목적에 필요한 최신 메시지나 스레드를 최대한 많이 가져와 저장해야 합니다. 예를 들어 앱에 최근 메시지 목록이 표시되는 경우 사용자가 표시된 처음 몇 개의 메시지를 지나 스크롤할 때 반응형 인터페이스를 지원할 수 있도록 충분한 메시지를 가져와 캐시할 수 있습니다.

전체 동기화를 실행하려면 다음 단계를 따르세요.

  1. messages.list 메서드를 호출하여 메시지 ID의 첫 번째 페이지를 가져옵니다.

  2. 목록 요청에서 반환된 각 메시지에 대해 messages.get 메서드 요청의 일괄 요청을 만듭니다.

    앱이 메시지 콘텐츠를 표시하는 경우 앱이 메시지를 처음 가져올 때 Formatformat=FULL 또는 format=RAW로 설정하고 결과를 캐시하여 추가 검색 작업을 방지해야 합니다. 이전에 캐시된 메시지를 가져오는 경우 labelIds만 변경될 수 있으므로 format=MINIMAL를 사용하여 응답 크기를 줄여야 합니다.

  3. 업데이트를 캐시된 결과에 병합합니다. 앱은 향후 부분 동기화를 위해 최신 메시지 (list 응답의 첫 번째 메시지)의 historyId를 저장해야 합니다.

부분 동기화

앱이 최근에 동기화된 경우 history.list 메서드를 사용하여 요청에 지정해야 하는 startHistoryId 쿼리 매개변수보다 최신인 모든 기록 레코드를 반환하는 부분 동기화를 실행할 수 있습니다.

startHistoryId 쿼리 매개변수는 최근 메시지의 historyId로 설정해야 합니다. 최근 메시지의 historyId를 가져오려면 messages.get 또는 messages.list 메서드를 사용합니다. 전체 또는 부분 동기화 중에 값을 설정하여 나중에 사용할 수도 있습니다.

반환된 History 객체에는 제공된 startHistoryId 이후의 메시지 ID와 각 메시지의 변경 유형(예: 메시지 추가 또는 라벨 수정)이 포함됩니다.

제한사항

기록은 일반적으로 최소 1주일 동안 제공되며, 그 이상인 경우도 많습니다. 하지만 기록을 사용할 수 있는 기간이 훨씬 짧을 수 있으며 드물지만 기록을 사용할 수 없는 경우도 있습니다.

클라이언트가 제공한 startHistoryId이 사용 가능한 기록 레코드 범위를 벗어나면 Gmail API에서 HTTP 404 오류 응답을 반환합니다. 이 경우 클라이언트는 전체 동기화를 실행해야 합니다.