ほとんどのアプリケーション シナリオでは、クライアントと Gmail の同期を維持することが重要です。全体的な同期のシナリオには、完全同期と部分同期の 2 つがあります。完全な同期は、クライアントが Gmail に初めて接続したときなど、まれなケースで必要になります。クライアントが最近同期を行っている場合、部分同期は完全同期に代わる軽量な代替手段です。また、プッシュ通知を使用して、必要なときにのみ、部分的な同期をリアルタイムでトリガーすることで、不必要なポーリングを回避することもできます。
目次
完全同期
アプリケーションが初めて Gmail に接続したとき、または部分的な同期が利用できない場合は、完全同期を行う必要があります。完全同期処理では、アプリは目的に必要な数の最新のメッセージまたはスレッドを取得して保存する必要があります。たとえば、アプリが最近のメッセージのリストを表示する場合、表示された最初の数メッセージを超えてユーザーがスクロールした場合にレスポンシブ インターフェースが作成できるように、十分なメッセージを取得してキャッシュに保存することをおすすめします。完全な同期オペレーションを実行する一般的な手順は次のとおりです。
messages.list
を呼び出して、メッセージ ID の最初のページを取得します。- 一覧表示リクエストによって返されたメッセージごとに
messages.get
リクエストのバッチ リクエストを作成します。アプリケーションでメッセージ コンテンツを表示する場合は、アプリが初めてメッセージを取得するときにformat=FULL
またはformat=RAW
を使用し、結果をキャッシュに保存して、追加の取得オペレーションを回避することをおすすめします。以前にキャッシュに保存されたメッセージを取得する場合は、labelIds
のみが変更される可能性があるため、format=MINIMAL
を使用してレスポンスのサイズを小さくする必要があります。 - 更新内容をキャッシュに保存された結果に統合します。アプリは、将来の部分同期のために最新のメッセージ(
list
レスポンスの最初のメッセージ)のhistoryId
を保存する必要があります。
部分同期
アプリの同期が最近行われた場合は、history.list
メソッドを使用して部分同期を実行して、リクエストで指定した startHistoryId
より新しいすべての履歴レコードを返すことができます。履歴レコードには、各メッセージのメッセージ ID と変更の種類(startHistoryId
の時点以降にメッセージの追加、削除、変更されたラベルなど)が含まれます。完全同期または部分同期から最新のメッセージの historyId
を取得して保存し、その後の部分同期オペレーションの startHistoryId
として提供できます。
制限事項
履歴レコードは通常、1 週間以上、多くの場合は 1 週間以上保持されます。ただし、レコードを使用できる期間は大幅に短くなり、まれにレコードを使用できない場合があります。クライアントから提供される startHistoryId
が履歴レコードの範囲外の場合、API は HTTP 404
エラー レスポンスを返します。この場合、前のセクションで説明したように、クライアントは完全同期を実行する必要があります。