Sincronizzazione dei client con Gmail

Mantenere sincronizzato il client con Gmail è importante per la maggior parte degli scenari di applicazione. Esistono due scenari di sincronizzazione complessivi: sincronizzazione completa e sincronizzazione parziale. La sincronizzazione completa è necessaria la prima volta che il client si connette a Gmail e in alcuni altri rari scenari. Se il client è stato sincronizzato di recente, la sincronizzazione parziale è un'alternativa più leggera rispetto a una sincronizzazione completa. Puoi anche utilizzare le notifiche push per attivare la sincronizzazione parziale in tempo reale e solo quando necessario, evitando così il polling non necessario.

Sommario

Sincronizzazione completa

La prima volta che la tua applicazione si connette a Gmail o se la sincronizzazione parziale non è disponibile, devi eseguire una sincronizzazione completa. In un'operazione di sincronizzazione completa, l'applicazione deve recuperare e archiviare il maggior numero possibile di messaggi o thread più recenti necessari per il tuo scopo. Ad esempio, se la tua applicazione mostra un elenco di messaggi recenti, potresti voler recuperare e memorizzare nella cache un numero sufficiente di messaggi per consentire un'interfaccia reattiva se l'utente scorre oltre i primi messaggi visualizzati. La procedura generale per eseguire un'operazione di sincronizzazione completa è la seguente:

  1. Chiama messages.list per recuperare la prima pagina di ID messaggio.
  2. Crea una richiesta batch di messages.get richieste per ciascuno dei messaggi restituiti dalla richiesta di elenco. Se la tua applicazione mostra i contenuti dei messaggi, devi utilizzare format=FULL o format=RAW la prima volta che la tua applicazione recupera un messaggio e memorizzare nella cache i risultati per evitare ulteriori operazioni di recupero. Se stai recuperando un messaggio memorizzato nella cache in precedenza, devi utilizzare format=MINIMAL per ridurre le dimensioni della risposta, poiché solo labelIds potrebbe cambiare.
  3. Unisci gli aggiornamenti ai risultati memorizzati nella cache. La tua applicazione deve memorizzare il historyId del messaggio più recente (il primo messaggio nella risposta list) per la sincronizzazione parziale futura.

Sincronizzazione parziale

Se la tua applicazione è stata sincronizzata di recente, puoi eseguire una sincronizzazione parziale utilizzando il metodo history.list per restituire tutti i record della cronologia più recenti della data startHistoryId specificata nella richiesta. I record della cronologia forniscono ID messaggio e tipo di modifica per ogni messaggio, ad esempio messaggio aggiunto, eliminato o etichette modificate dall'ora del startHistoryId. Puoi ottenere e archiviare l'historyId del messaggio più recente da una sincronizzazione completa o parziale da fornire come startHistoryId per le future operazioni di sincronizzazione parziale.

Limitazioni

I record della cronologia sono in genere disponibili per almeno una settimana e spesso più a lungo. Tuttavia, il periodo di tempo per il quale i record sono disponibili potrebbe essere significativamente inferiore e, in rari casi, i record potrebbero non essere disponibili. Se startHistoryId fornito dal client non rientra nell'intervallo disponibile di record della cronologia, l'API restituisce una risposta di errore HTTP 404. In questo caso, il client deve eseguire una sincronizzazione completa come descritto nella sezione precedente.