クライアントを Gmail と同期する

ほとんどのアプリケーション シナリオでは、クライアントと Gmail の同期を維持することが重要です。全体的な同期のシナリオには、完全同期と部分同期の 2 つがあります。完全な同期は、クライアントが Gmail に初めて接続したときなど、まれなケースで必要になります。クライアントが最近同期を行っている場合、部分同期は完全同期に代わる軽量な代替手段です。また、プッシュ通知を使用して、必要なときにのみ、部分的な同期をリアルタイムでトリガーすることで、不必要なポーリングを回避することもできます。

目次

完全同期

アプリケーションが初めて Gmail に接続したとき、または部分的な同期が利用できない場合は、完全同期を行う必要があります。完全同期処理では、アプリは目的に必要な数の最新のメッセージまたはスレッドを取得して保存する必要があります。たとえば、アプリが最近のメッセージのリストを表示する場合、表示された最初の数メッセージを超えてユーザーがスクロールした場合にレスポンシブ インターフェースが作成できるように、十分なメッセージを取得してキャッシュに保存することをおすすめします。完全な同期オペレーションを実行する一般的な手順は次のとおりです。

  1. messages.list を呼び出して、メッセージ ID の最初のページを取得します。
  2. 一覧表示リクエストによって返されたメッセージごとに messages.get リクエストのバッチ リクエストを作成します。アプリケーションでメッセージ コンテンツを表示する場合は、アプリが初めてメッセージを取得するときに format=FULL または format=RAW を使用し、結果をキャッシュに保存して、追加の取得オペレーションを回避することをおすすめします。以前にキャッシュに保存されたメッセージを取得する場合は、labelIds のみが変更される可能性があるため、format=MINIMAL を使用してレスポンスのサイズを小さくする必要があります。
  3. 更新内容をキャッシュに保存された結果に統合します。アプリは、将来の部分同期のために最新のメッセージ(list レスポンスの最初のメッセージ)の historyId を保存する必要があります。

部分同期

アプリの同期が最近行われた場合は、history.list メソッドを使用して部分同期を実行して、リクエストで指定した startHistoryId より新しいすべての履歴レコードを返すことができます。履歴レコードには、各メッセージのメッセージ ID と変更の種類(startHistoryId の時点以降にメッセージの追加、削除、変更されたラベルなど)が含まれます。完全同期または部分同期から最新のメッセージの historyId を取得して保存し、その後の部分同期オペレーションの startHistoryId として提供できます。

制限事項

履歴レコードは通常、1 週間以上、多くの場合は 1 週間以上保持されます。ただし、レコードを使用できる期間は大幅に短くなり、まれにレコードを使用できない場合があります。クライアントから提供される startHistoryId が履歴レコードの範囲外の場合、API は HTTP 404 エラー レスポンスを返します。この場合、前のセクションで説明したように、クライアントは完全同期を実行する必要があります。