Sincronización de clientes con Gmail

Mantener tu cliente sincronizado con Gmail es importante para la mayoría de los casos de uso de la aplicación. Existen dos situaciones generales de sincronización: la sincronización completa y la sincronización parcial. La sincronización completa es necesaria la primera vez que tu cliente se conecta a Gmail y en algunos otros casos poco frecuentes. Si tu cliente se sincronizó recientemente, la sincronización parcial es una alternativa más liviana a la sincronización completa. También puedes usar notificaciones push para activar la sincronización parcial en tiempo real y solo cuando sea necesario, lo que evita el sondeo innecesario.

Contenido

Sincronización completa

La primera vez que tu aplicación se conecta a Gmail, o si la sincronización parcial no está disponible, debes realizar una sincronización completa. En una operación de sincronización completa, tu aplicación debe recuperar y almacenar tantos mensajes o subprocesos más recientes como sean necesarios para tu propósito. Por ejemplo, si tu aplicación muestra una lista de mensajes recientes, es posible que desees recuperar y almacenar en caché suficientes mensajes para permitir una interfaz responsiva si el usuario se desplaza más allá de los primeros mensajes que se muestran. El procedimiento general para realizar una operación de sincronización completa es el siguiente:

  1. Llama a messages.list para recuperar la primera página de IDs de mensajes.
  2. Crea una solicitud por lotes de solicitudes de messages.get para cada uno de los mensajes que devuelve la solicitud de lista. Si tu aplicación muestra el contenido de los mensajes, debes usar format=FULL o format=RAW la primera vez que la aplicación recupera un mensaje y almacena en caché los resultados para evitar operaciones de recuperación adicionales. Si recuperas un mensaje almacenado en caché anteriormente, debes usar format=MINIMAL para reducir el tamaño de la respuesta, ya que solo puede cambiar el labelIds.
  3. Combina las actualizaciones con los resultados almacenados en caché. Tu aplicación debe almacenar el historyId del mensaje más reciente (el primer mensaje en la respuesta de list) para la sincronización parcial futura.

Sincronización parcial

Si tu aplicación se sincronizó recientemente, puedes realizar una sincronización parcial con el método history.list para devolver todos los registros del historial más recientes que el startHistoryId que especificaste en tu solicitud. Los registros del historial proporcionan los IDs de los mensajes y el tipo de cambio para cada mensaje, como mensaje agregado, borrado o etiquetas modificadas desde el momento de la startHistoryId. Puedes obtener y almacenar el historyId del mensaje más reciente de una sincronización completa o parcial para proporcionarlo como un startHistoryId para futuras operaciones de sincronización parcial.

Limitaciones

Por lo general, los registros del historial están disponibles durante al menos una semana y, a menudo, por más tiempo. Sin embargo, el período durante el cual los registros están disponibles puede ser significativamente menor y, en ocasiones, los registros pueden no estar disponibles en casos excepcionales. Si el startHistoryId que proporciona tu cliente está fuera del rango disponible de registros del historial, la API devuelve una respuesta de error HTTP 404. En este caso, tu cliente debe realizar una sincronización completa como se describe en la sección anterior.