Usa el contrato revisado de inicio autenticado
El inicio autenticado es la transición del estado de sesión Driver restaurado localmente a la navegación principal de Driver App. Coordina carga, cuenta, horario, configuración, proveedor de pedidos, permisos, conectividad y estado de tiempo real; no es un único resultado de inicio de sesión o lectura del servidor.
Usa este contrato al mantener el inicio, orden de proveedores, pila autenticada o pestañas principales. Los efectos de inicialización y carga de proveedores dependen del proyecto, la cuenta, la plataforma, la conectividad y la disponibilidad del proveedor.
Disponibilidad
La rama autenticada requiere una sesión iniciada restaurada localmente y un proyecto configurado de Driver App. Un requisito previo de horario configurado puede tener prioridad sobre el espacio de trabajo principal. El estado local de permisos puede retrasar la disponibilidad de Root y luego determina si se monta Map view o su alternativa de permisos.
Que una cuenta aparezca en un producto de operadores no demuestra que tenga una sesión local presente, válida, habilitada o autorizada para una solicitud de Driver App.
Requisitos previos
- Una compilación compatible de Driver App y configuración de proyecto.
- Una cuenta de conductor obtenida mediante el flujo de cuenta compatible.
- Estado de sesión guardado que el cliente pueda rehidratar.
- Disponibilidad local completa de idioma y configuración que necesiten los proveedores dependientes.
- Una estrategia explícita para los estados de fallo de horario, permisos, plataforma, conectividad y proveedores.
- Autorización y gestión de errores separadas para cada solicitud de API que comience después de admitir la navegación.
Límites de responsabilidad
| Límite | Responsabilidad durante el inicio | Separación requerida |
|---|---|---|
| Proveedor de sesión | Leer token, usuario y estado del dispositivo guardados; exponer carga e inicio de sesión. | Rehidratar localmente no es autenticación del servidor. |
| Proveedores de idioma/configuración | Resolver el idioma local y configuración actual del proyecto para proveedores posteriores. | La configuración ausente o predeterminada no es una respuesta correcta del servicio. |
| Navegador Root | Mantener visible la carga hasta que se resuelvan sus entradas locales; elegir navegación sin sesión, de horario o autenticada. | Admitir navegación no significa que los datos estén listos. |
| Compuerta de horario | Comparar el horario de Driver disponible localmente con la regla de validación configurada en el cliente. | El control del cliente no es un contrato completo de horario del servidor. |
| Pila autenticada | Montar las pestañas principales y las rutas de detalle registradas cuando termina la carga de sesión. | Registrar una ruta no autoriza la acción de detalle. |
| Pestañas principales | Iniciar en Orders y mostrar Map view, Messages y Profile si están montadas; sustituir Map view localmente cuando falte el permiso. | Montar una pestaña no demuestra lectura, ubicación, mensaje ni efecto de perfil. |
| Proveedores de pedidos/tiempo real | Iniciar lecturas, configuración de transporte y suscripciones aptas según sesión, proyecto, conectividad y estado de pantalla. | Disponibilidad, conexión, intención de unirse, recibo y vigencia son distintos. |
| API | Debe autorizar y validar independientemente cada lectura o mutación; los contratos de tareas afectadas siguen excluidos si no se demuestra ese límite. | El cliente no debe tratar su sesión guardada como decisión de autorización. |
El proveedor de tiempo real puede inicializar el transporte tras cargar la sesión según la configuración de proyecto, incluso antes de que la pantalla autenticada demuestre que es útil. La pila autenticada y otros proveedores añaden suscripciones bajo sus propias condiciones. Mantén separados la creación del transporte, pertenencia autenticada, datos de pantalla y finalización visible para el usuario.
Entradas y resultados
| Entrada/estado | Transición del cliente | Resultado observable | Límite de fallo o efecto parcial |
|---|---|---|---|
| Carga de sesión | Restaurar valores de sesión guardados. | La carga sigue visible hasta resolver el trabajo local de sesión. | Un error de almacenamiento puede producir un estado incompleto; aún no existe veredicto del servidor. |
| No se admite sesión | Elegir navegación sin sesión. | Puede aparecer una superficie sin sesión; este contrato no garantiza la transición limpia de tutorial del primer inicio. | No demuestra cierre de sesión del servidor ni revocación del token. |
| Sesión admitida y estado de inicio pendiente | Seguir resolviendo la disponibilidad de notificaciones, proveedor de pedidos, horario y permisos. | Puede seguir visible la carga. | Los fallos individuales pueden resolverse de forma distinta; no hay un único éxito agregado. |
| La validación bloquea por horario | Elegir el requisito de horario en lugar del contenedor autenticado. | Aparece la superficie de bloqueo por horario. | La hora/lógica del cliente no es el conjunto completo de reglas de API. |
| Se admite el contenedor autenticado | Montar la pila autenticada y luego las pestañas principales. | Orders es la pestaña inicial; las otras dependen del estado local. | Que una pestaña sea visible no demuestra que haya datos disponibles. |
| Pestaña Map sin el permiso local requerido | Montar el sustituto específico de permisos. | Se muestran indicaciones de permisos en lugar del mapa. | La solicitud no demuestra permiso efectivo ni éxito de ubicación. |
| Hay conectividad e identidad de sesión | Los proveedores aptos de tiempo real/lectura pueden conectarse, suscribirse o solicitar datos. | Puede cambiar después el estado de carga, contenido, vacío o error. | La conexión y la intención de solicitud no demuestran aceptación, entrega ni vigencia. |
| Navegación a Profile | El área de cuenta puede actualizar los datos del usuario actual. | Puede cambiar la carga/contenido/error de Profile. | El resultado de actualización debe gestionarse aparte de navegar. |
El comportamiento de Atrás corresponde a la pila activa. El inicio no debe usar Atrás para eludir requisitos previos de sesión, horario o permisos. Push y navegación programática deben seguir apuntando a una ruta registrada y superar sus propios controles de tarea.
Seguridad y privacidad
- Trata el estado guardado de cuenta y token como sensible y provisional.
- Exige autorización y validación independientes del servidor en cada solicitud; nunca uses una ruta montada, identificador de usuario, conexión de transporte ni rol local como prueba de autorización. Mantén excluidos los contratos afectados de mensajes/lecturas y otras tareas hasta demostrar ese límite.
- No registres tokens, registros de sesión, identidad Driver, identificadores de sala, pedidos, mensajes, contactos, coordenadas ni ID de proveedores.
- Evita ejecutar el inicio autenticado contra servicios reales para documentar o hacer pruebas rápidas. El montaje normal puede iniciar lecturas, tiempo real, notificaciones y trabajo relacionado con ubicación.
- Limpia o sustituye el estado asociado a una cuenta cuando cambie la propiedad; no permitas que lecturas/eventos tardíos de una sesión anterior actualicen la siguiente.
Límites y estados de fallo
| Estado | Significado | Gestión requerida |
|---|---|---|
| Sesión rehidratada localmente | Los valores guardados están disponibles para los proveedores. | Mantén la autorización del servidor por solicitud. |
| Se quitó la carga de Root | La disponibilidad local admitió otra rama. | No informes éxito de API ni proveedor. |
| Pestañas autenticadas visibles | Navegación montada para la sesión local. | Permite que cada pestaña muestre carga, vacío, no disponible y error. |
| Existe transporte de tiempo real | Se creó o conectó un objeto de transporte. | No deduzcas pertenencia autenticada, entrega de eventos ni vigencia de datos. |
| Se solicitó una suscripción | El proveedor pidió unirse al estado de tiempo real de la tarea. | Registra por separado la desconexión, reconexión, limpieza y propiedad de sesión obsoleta. |
| Falla una lectura tras montar pestañas | Divergieron la navegación y la disponibilidad de datos. | Mantén el fallo en la tarea responsable y evita repetir mutaciones. |
| La sesión queda ausente o deshabilitada | La cuenta local ya no admite trabajo autenticado. | Vuelve al flujo compatible de sesión/autenticación; no fuerces navegación. |
| App pasa a segundo plano o vuelve a primer plano | Puede ejecutarse actualización, permisos, ubicación o tiempo real según el ciclo de vida. | Impide que resultados tardíos o de una sesión anterior se conviertan en estado actual. |
El inicio no garantiza orden ni atomicidad entre almacenamiento local, configuración, lecturas de API, configuración de notificaciones, suscripciones en tiempo real, comprobaciones de horario ni ciclo de vida. Trata cada resultado por separado y muestra el estado obsoleto o parcial sin afirmar que se completó.
Diagnóstico
| Síntoma | Inspeccionar | Siguiente paso seguro |
|---|---|---|
| No desaparece la carga | Disponibilidad de sesión, idioma, configuración, notificaciones, proveedor de pedidos, horario y permisos locales | Captura solo nombres de estado y tiempos saneados; no reinicies repetidamente contra servicios en vivo. |
| Aparece la entrada sin sesión para una cuenta prevista | Propiedad de sesión local y resultado de almacenamiento | Usa el contrato de autenticación; no inyectes manualmente navegación ni token. |
| Aparece inesperadamente el requisito de horario | Validación configurada, hora del dispositivo y horario disponible | Compara entradas públicas y escálalo al responsable de cuenta/configuración. |
| Aparecen pestañas, pero no contenido | Disponibilidad de navegación frente a lectura del proveedor responsable | Diagnostica carga, vacío, no disponible o error sin emitir una mutación. |
| El estado de tiempo real parece obsoleto | Conectividad, transporte, ciclo de suscripción, propiedad de sesión y lectura de pantalla | Usa el contrato de tiempo real y verifica la limpieza antes de reconectar. |
| Map view muestra indicaciones de permisos | Resultado local del permiso y estado de plataforma | Usa el contrato de permisos; no deduzcas el permiso efectivo solo de las declaraciones. |
Vuelve a revisar este contrato cuando cambien el almacenamiento/rehidratación de sesión, orden de proveedores, disponibilidad de Root, prioridad de horario, rutas autenticadas, pestaña inicial, sustitución de permisos, ciclo de tiempo real o limpieza del ámbito de cuenta.
Guías relacionadas: Arquitectura de Driver App · Descripción general de Driver App · Inicio y carga · Iniciar sesión como conductor