Modos de conexión
Modo conectado a la nube
Cuando la red está disponible yPFGameSaveFilesAddUserWithUiAsync() se completa correctamente, el sistema funciona en modo conectado a la nube. En este modo:
- Todas las API funcionan normalmente con sincronización completa en la nube
- Las cargas de datos de guardado funcionan según lo esperado
- La información de cuota de almacenamiento está disponible
- La supervisión del dispositivo activo funciona correctamente
Modo sin conexión (no conectado a la nube)
Cuando la red no está disponible o el usuario elige jugar sin conexión, el sistema entra en modo sin conexión con funcionalidad limitada. Puede comprobar el estado de conexión actual mediantePFGameSaveFilesIsConnectedToCloud() para determinar en qué modo está funcionando el sistema.
Control de errores de red durante la sincronización inicial
Cuando se llama aPFGameSaveFilesAddUserWithUiAsync() sin conectividad de red, se desencadena una PFGameSaveFilesUiSyncFailedCallback. La devolución de llamada de XAsyncBlock no se activa mientras el sistema espera la respuesta del usuario: la operación asincrónica se pausa hasta que el usuario selecciona una acción terminal.
- Reintentar (
Retry): Reintenta la llamada de red. Si el reintento también falla, esta devolución de llamada se activa de nuevo y el usuario debe responder otra vez. La devolución de llamada deXAsyncBlockpermanece diferida durante cada bucle de reintento. - Usar sin conexión (
UseOffline): La devolución de llamada deXAsyncBlockse activa conS_OK, pero el sistema entra en modo sin conexión (detectable conPFGameSaveFilesIsConnectedToCloud()). - Cancelar: La devolución de llamada de
XAsyncBlockse activa conE_PF_GAMESAVE_USER_CANCELLED.
Comportamiento de las API en modo sin conexión
En el modo sin conexión, las API se comportan de manera diferente:API que funcionan normalmente
PFGameSaveFilesGetFolder(): devuelve la ruta de la carpeta de guardado local
API con funcionalidad limitada
PFGameSaveFilesUploadWithUiAsync(): devuelveS_OKinmediatamente, pero la finalización asincrónica devuelveE_PF_GAMESAVE_DISCONNECTED_FROM_CLOUDPFGameSaveFilesGetRemainingQuota(): devuelveE_PF_GAMESAVE_DISCONNECTED_FROM_CLOUDPFGameSaveFilesSetActiveDeviceChangedCallback(): se puede establecer, pero nunca se desencadenará
Volver al modo en línea
- Llame de nuevo a
PFGameSaveFilesAddUserWithUiAsync()para intentar la reconexión - No es necesario reinicializar completamente el sistema de Game Saves
- Volverá a mostrar la interfaz de usuario de error si la red sigue sin estar disponible
- Use
PFGameSaveFilesIsConnectedToCloud()para comprobar el estado de la conexión después de los intentos de reintento
Escenarios adicionales de estado de conexión
La APIPFGameSaveFilesIsConnectedToCloud() es particularmente útil porque la desconexión puede producirse de varias maneras:
- Red no disponible durante la sincronización: El usuario elige explícitamente jugar sin conexión
- Cambio de dispositivo activo: Otro dispositivo toma el control como dispositivo activo, lo que pone automáticamente este dispositivo en modo sin conexión
Procedimientos recomendados para la compatibilidad sin conexión
- Implemente siempre las devoluciones de llamada de error de sincronización para controlar correctamente los problemas de red
- Compruebe el estado de la conexión con regularidad mediante
PFGameSaveFilesIsConnectedToCloud()antes de intentar operaciones en la nube - Informe a los jugadores cuando funcionen en modo sin conexión para que entiendan que los guardados no se sincronizarán
- Proporcione opciones de reintento cuando se restaure la conectividad de red
- Los guardados locales siempre funcionan: los jugadores pueden seguir jugando independientemente del estado de la red
- Supervise las desconexiones: recuerde que los dispositivos pueden desconectarse cuando otro dispositivo se convierte en el activo
Comportamiento de la carga en modo conectado
Incluso en modo conectado, las cargas pueden fallar debido a problemas de red o límites de frecuencia. Cuando esto sucede, la devolución de llamada deXAsyncBlock no se activa inmediatamente: la operación asincrónica se pausa mientras el sistema espera la respuesta del usuario a través de la máquina de estados de devoluciones de llamada de la interfaz de usuario:
- La
PFGameSaveFilesUiSyncFailedCallbackse activa con los detalles del error. - La devolución de llamada de
XAsyncBlockaún no se activa: la operación se pausa mientras el sistema espera una respuesta. - Si el usuario selecciona
Retry, la carga se reintenta. Si vuelve a fallar, la devolución de llamada se activa de nuevo y el usuario debe responder otra vez. - Si el usuario selecciona
Cancel, la devolución de llamada deXAsyncBlockse activa conE_PF_GAMESAVE_USER_CANCELLED. - Si un reintento se realiza correctamente, la devolución de llamada de
XAsyncBlockse activa conS_OK.
PFGameSaveFilesUploadWithUiAsync() más adelante cuando se restaure la red.