Saltar al contenido principal

Usa el contrato revisado de ejecución en segundo plano

La ejecución en segundo plano de Driver App coordina los cambios de AppState, el estado local de permisos, el estado de la cuenta autenticada, la disponibilidad del idioma, la configuración de ubicación en segundo plano, la actualización directa de ubicación, la actualización de cuenta, el registro de eventos y los callbacks del proveedor.

Montar la aplicación o moverla entre primer plano y segundo plano puede iniciar trabajo sin pulsar un botón de tarea. Este contrato describe únicamente las responsabilidades del código fuente; no demuestra aislamiento en tiempo de ejecución, entrega de ubicación, éxito del proveedor ni un backend desplegado.

Disponibilidad​

La configuración de ubicación en segundo plano solo está definida en el código fuente después de que el control local de permisos de Root indique que se concedieron, haya un token disponible y termine la carga del idioma. La rama de inicio revisada comprueba el estado listo/deshabilitado y la marca local de usuario habilitado, pero no exige explícitamente autenticación actual antes de emitir una intención de inicio. Una rama posterior de detención sí comprueba el estado no autenticado. Considera la autenticación explícita antes del inicio como una responsabilidad obligatoria, no como un comportamiento demostrado.

Los permisos solicitados/declarados/efectivos del sistema operativo, el estado local de concesión, la autorización del proveedor, la confianza en la ubicación, la disponibilidad del usuario y la aceptación del servidor siguen siendo aspectos independientes.

Requisitos previos​

  • Declaraciones nativas de permisos y estado combinado efectivo de compilación revisados.
  • Requisitos explícitos de producto y privacidad para primer plano/segundo plano.
  • Identidad Driver autenticada y autorización en cada solicitud.
  • Cero registros sensibles y límites de salida a proveedor/red claramente asignados.
  • Limpieza determinista de listeners/suscripciones y aislamiento por generación de cuenta.
  • Ejecuta las pruebas de ubicación de una en una en un entorno de prueba autorizado.

Límites de responsabilidad​

LímiteResponsabilidadLímite
Listener AppState de RootObservar active/inactive/background y solicitar trabajo configurado de modo desarrollador, ubicación, actualización de usuario, nueva comprobación de permisos o registro de eventos.Se registra una vez con el estado inicial de su cierre; los valores capturados de autenticación/usuario/carga pueden quedar obsoletos.
Proveedor de permisosProporcionar el estado local actual del permiso de ubicación y volver a comprobarlo según el estado de la aplicación.La evaluación completa de permisos y la limpieza del listener siguen bloqueadas.
Configuración en segundo planoConfigurar proveedor, callbacks HTTP/de ubicación, encabezados, plantillas, notificación y comportamiento de precisión/ciclo de vida.Configurar no demuestra inicio, entrega, confianza ni éxito de la limpieza.
Efecto de inicio/detenciónEl orden revisado puede solicitar el inicio si está listo/deshabilitado y el usuario está habilitado localmente, antes de la rama posterior de usuario no autenticado.Exige autenticación y generación de cuenta actuales; las condiciones del código no demuestran estado del proveedor.
Callback de ubicaciónObservar eventos de ubicación del proveedor.El valor de un callback no demuestra vigencia, ausencia de simulación ni almacenamiento en el servidor.
Callback HTTPObservar la respuesta del proveedor, solicitar una actualización directa de ubicación y cerrar sesión localmente ante una respuesta no autorizada.La respuesta, el registro y las acciones posteriores pueden ser parciales.
Actualización directa de ubicaciónLeer la ubicación actual del dispositivo y solicitar la publicación de ubicación Driver.Se aplican los límites C07/C08 de confianza/almacenamiento/emisión.
Actualización de API/AppStateActualizar el usuario actual y registrar eventos de segundo plano/conectividad de manera condicional.El estado inicial capturado y los fallos pueden suprimir o desviar el trabajo.

Entradas y resultados​

Entrada/estadoTransición del código fuenteResultado observable del clienteLímite
El permiso local no se concedióLa configuración termina después de limpiar la carga local.Esa llamada no configura el proveedor.El estado efectivo/actual del sistema operativo es independiente.
Falta el tokenSe solicita quitar los listeners existentes del proveedor.No se configura una sesión autenticada.No se han demostrado la finalización de la eliminación ni el estado del proveedor.
Permiso + token + idioma listoSe sigue la ubicación y se espera a que el proveedor esté listo.Se guarda localmente el estado listo/habilitado.No se demuestra el éxito del proveedor/servidor.
Listo, deshabilitado, usuario habilitadoSe puede solicitar iniciar sin comprobar explícitamente la autenticación actual en esa rama.El estado del proveedor podría cambiar más adelante.Siguen sin demostrarse la generación de autenticación/cuenta y la entrega de ubicación.
No está listo, falta autenticación o el usuario está deshabilitadoUna rama posterior puede solicitar detener.Intención de detener el proveedor.El orden de detención no puede borrar una intención previa de inicio con usuario obsoleto; no se demuestra la limpieza.
AppState active/background/inactiveEl manejador puede solicitar trabajo de ubicación/usuario; en segundo plano puede solicitar registro de eventos.Puede comenzar trabajo asíncrono.El cierre inicial puede conservar usuario/token nulos o loaded en falso.
El callback HTTP indica falta de autorizaciónSe solicita el cierre de sesión local.Puede cambiar la autenticación/navegación local.La limpieza de servidor/proveedor/local es independiente.

Seguridad y privacidad​

  • Nunca guardes ni expongas coordenadas precisas, respuestas HTTP/de proveedor sin procesar, tokens, datos de usuario/pedido, identificadores de proveedor ni registros detallados de ubicación.
  • Trata por separado la recopilación de ubicación, el almacenamiento de ubicación actual/anterior, la emisión de disponibilidad, el uso compartido con clientes, el historial/efectos de pedidos y la retención: requieren aprobaciones distintas.
  • No supongas que el simulador, el modo en segundo plano o la configuración de depuración del proveedor son herméticos.
  • Vincula callbacks y resultados tardíos a la generación actual de cuenta/sesión.
  • Exige que la limpieza quite todos los listeners de ubicación/HTTP/AppState/permisos/proveedor y demuestre que no queda tráfico saliente.

Límites y estados de fallo​

EstadoSignificadoRespuesta de mantenimiento
El callback AppState conserva valores obsoletosEl listener se registró con los valores iniciales de Root.No deduzcas el comportamiento de autenticación/usuario/carga actuales.
La configuración asíncrona devuelve una función de limpiezaUna función asíncrona devuelve la limpieza.Llamar al efecto no la devuelve ni la consume; pueden quedar listeners entre cambios de dependencia.
El listener de permisos no tiene limpiezaEl contexto del proveedor puede retener un listener de ciclo de vida.Corrígelo y pruébalo antes de declarar el flujo completo.
El proveedor está listo, pero no se inicióSe completó la configuración; la condición de inicio es distinta.Mantén el estado explícito.
Se solicitó iniciar/detenerIntención de comando al proveedor.Verifica el estado real solo con un arnés aislado.
Callback de ubicación/HTTPEl proveedor proporcionó datos/respuesta.No deduzcas confianza, almacenamiento ni finalización.
Callback no autorizadoSe solicitó cierre de sesión local.La limpieza del proveedor/sesión es independiente.

Diagnóstico​

SíntomaInspeccionarDiagnóstico seguro
No ocurre la actualización AppState previstaValores del cierre inicial, montaje del listener y generación actual de cuentaUsa un rastreo estático; no envíes al segundo plano una aplicación autenticada real.
Aparecen callbacks duplicados de ubicación/HTTPConsumo de la limpieza de configuración asíncrona y limpieza del listener del proveedor de permisosCuenta registros de listeners sintéticos con un arnés aislado.
El proveedor indica que está listo, pero no hay resultado de ubicaciónEstados listo, inicio, permiso, autenticación, habilitación del usuario y salida de datos por separadoNo uses coordenadas reales para diagnosticar.
Se cierra la sesión después de una respuesta del proveedorGestión de la respuesta HTTP y responsabilidad de limpieza de sesiónConsidera parciales el estado de sesión/proveedor hasta conciliarlos.
La ubicación parece haberse guardado o emitido de forma inesperadaLímites C07/C08 de publicación, disponibilidad e historial del pedidoDetén la ejecución y solicita una revisión de privacidad/seguridad.

Vuelve a revisar este contrato cuando cambien las dependencias de AppState, el proveedor de permisos, la configuración/inicialización/detención en segundo plano, la limpieza de listeners, la publicación de ubicación, los callbacks del proveedor, la gestión de falta de autorización o el aislamiento por generación de cuenta.

Guías relacionadas: Permisos del dispositivo · Permisos de ubicación · Validación de ubicación · Inicio autenticado