Usa el contrato revisado de permisos e integraciones
Los permisos de Driver App tienen al menos cuatro estados distintos: lo que solicita JavaScript, lo que declara la aplicación, lo que contiene efectivamente la compilación nativa final y lo que informa el sistema operativo durante la ejecución. Ninguno sustituye a los demás.
Algunas comprobaciones de permisos de plataforma y rutas de limpieza de listeners están incompletas. Las concesiones efectivas y el comportamiento nativo o del proveedor también dependen del dispositivo, el sistema operativo y la configuración del proyecto.
Disponibilidad
Los permisos de ubicación solicitados varían por plataforma y versión de Android. El código JavaScript revisado solicita en iOS ubicación durante el uso y siempre. La rama prevista para Android 10 enumera ubicación en segundo plano, reconocimiento de actividad y ubicación precisa/aproximada, pero no se ha establecido la selección real porque difieren el valor de versión y el tipo de comparación. Android 11 o posterior solicita reconocimiento de actividad y ubicación precisa/aproximada, pero omite la ubicación en segundo plano de esa lista; las versiones anteriores de Android solo solicitan ubicación precisa.
Las declaraciones nativas incluyen capacidades adicionales de ubicación, servicio, notificaciones, vibración, contactos y proveedores. La declaración no demuestra una solicitud, concesión o uso en tiempo de ejecución ni el resultado final del manifiesto combinado.
Requisitos previos
- Inspecciona el conjunto exacto de permisos solicitados por plataforma/SO y las declaraciones nativas de la compilación final.
- Modela por separado los estados no disponible, denegado, bloqueado, limitado y concedido.
- Exige esperar el resultado de cada permiso requerido.
- Proporciona limpieza segura durante el ciclo de vida y una nueva comprobación al volver desde Ajustes.
- Revisa cada integración —ubicación, notificaciones, mapas, contactos, biblioteca de fotos, sonido, tiempo real y navegación externa— con su propio contrato de privacidad/efectos.
Límites de responsabilidad
| Límite | Responsabilidad | Límite |
|---|---|---|
| Contexto de permisos | Construir la lista de solicitudes del SO, comprobar/solicitar varias y exponer el estado local. | El estado local no es autoridad sobre la compilación efectiva. |
| Configuración de permisos de Root | Solicitar/comprobar permisos de inicio y controlar la disponibilidad. | La comprobación agregada revisada usa incorrectamente predicados asíncronos y puede marcar concesión antes de que se resuelvan. |
| Nueva comprobación AppState | Volver a comprobar cuando la aplicación se active. | El listener del contexto de permisos no tiene una limpieza de eliminación revisada. |
| Interfaz RequestPermissions | Explicar el permiso que falta y ofrecer Ajustes. | El texto/la transferencia a Ajustes no demuestra concesión ni reinicio. |
| Declaraciones nativas | Declarar capacidades de plataforma e integraciones de proveedores. | Las dependencias pueden combinar/modificar el resultado efectivo. |
| SO/Ajustes | Controlar avisos, estado bloqueado y elección del usuario. | Volver a la aplicación no implica éxito. |
| Integración de proveedor | Usar capacidades concedidas para ubicación, push, mapas, contactos, fotos/medios, sonido o tiempo real. | El permiso no equivale a finalización del proveedor/API. |
Entradas y resultados
| Entrada/estado | Resultado del cliente | Límite del fallo |
|---|---|---|
| SO/versión | Se selecciona la lista de solicitudes. | El análisis de versión y las declaraciones de compilación pueden discrepar. |
| Comprobar varios | Se guarda el mapa de estados. | Para completitud se requiere cada elemento realmente obligatorio. |
| Solicitar varios | Se guarda el mapa de avisos/resultados. | El defecto de agregación de Root puede informar concesión prematuramente. |
| Todo concedido localmente | Se pueden admitir rutas de mapas/segundo plano. | No se demuestra el permiso efectivo ni la confianza en el proveedor. |
| Denegado/bloqueado | Interfaz de permisos o transferencia a Ajustes. | El cambio en Ajustes, reinicio y regreso son etapas distintas. |
| La aplicación se activa | Se solicita una nueva comprobación. | Puede quedar un listener duplicado. |
| Montaje de integración | Puede comenzar trabajo nativo/del proveedor/API. | El permiso por sí solo no es autorización ni éxito. |
Seguridad y privacidad
- Solicita solo los permisos necesarios para un propósito documentado y una función activa.
- Nunca registres tokens de permisos, ID de proveedores, ubicación precisa, contactos, medios, mensajes ni cargas de respuesta nativa.
- Trata la concesión del permiso, recopilación de datos, publicación por API, uso del proveedor y retención como consentimientos/autorizaciones separados.
- No trates módulos nativos inactivos ni rutas no listadas como funciones disponibles.
Límites y estados de fallo
| Estado | Significado | Respuesta de mantenimiento |
|---|---|---|
| La agregación asíncrona indica concesión | Se trataron como verdaderas promesas de predicados. | Corrige/espera todos los resultados; no declares completitud. |
| Rama prevista de Android 10 | El código fuente define ubicación en segundo plano, actividad y ubicación precisa/aproximada, pero la selección real está bloqueada por una discrepancia de tipo de versión. | Corrige la selección con tipos seguros y ejecuta pruebas positivas/negativas de Android 10; no afirmes que se solicita el conjunto combinado. |
| Listener AppState retenido | Las comprobaciones pueden duplicarse tras el remontaje. | Añade limpieza y pruebas de recuento de listeners. |
| Se abrió Ajustes | El siguiente estado corresponde al SO. | Vuelve a comprobar al regresar; no afirmes éxito automático. |
| Declaración nativa sin solicitud JavaScript | La capacidad está empaquetada, pero no necesariamente se solicita/usa. | Mantén esos hechos separados. |
| Integración disponible | El proveedor aún puede fallar o producir efectos secundarios. | Usa el contrato específico de la integración. |
Diagnóstico
Diagnostica de forma independiente la lista solicitada, el manifiesto declarado, el resultado efectivo de la compilación, el estado del SO, el recuento de listeners AppState y el estado de proveedor/API. Nunca uses una ubicación, notificación, llamada, foto o mensaje real para demostrar el comportamiento de permisos.
Vuelve a revisar cuando cambien las versiones de SO admitidas, las listas solicitadas, los manifiestos, las dependencias, la agregación de inicio, la limpieza AppState, el flujo de Ajustes o la integración del proveedor.
Guías relacionadas: Permisos del dispositivo · Permisos de ubicación · Validación de ubicación · Ejecución en segundo plano · Contrato de ubicación · Contrato de notificaciones · Contrato de mapas