Saltar al contenido principal

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ímiteResponsabilidadLímite
Contexto de permisosConstruir 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 RootSolicitar/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 AppStateVolver a comprobar cuando la aplicación se active.El listener del contexto de permisos no tiene una limpieza de eliminación revisada.
Interfaz RequestPermissionsExplicar el permiso que falta y ofrecer Ajustes.El texto/la transferencia a Ajustes no demuestra concesión ni reinicio.
Declaraciones nativasDeclarar capacidades de plataforma e integraciones de proveedores.Las dependencias pueden combinar/modificar el resultado efectivo.
SO/AjustesControlar avisos, estado bloqueado y elección del usuario.Volver a la aplicación no implica éxito.
Integración de proveedorUsar 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/estadoResultado del clienteLímite del fallo
SO/versiónSe selecciona la lista de solicitudes.El análisis de versión y las declaraciones de compilación pueden discrepar.
Comprobar variosSe guarda el mapa de estados.Para completitud se requiere cada elemento realmente obligatorio.
Solicitar variosSe guarda el mapa de avisos/resultados.El defecto de agregación de Root puede informar concesión prematuramente.
Todo concedido localmenteSe pueden admitir rutas de mapas/segundo plano.No se demuestra el permiso efectivo ni la confianza en el proveedor.
Denegado/bloqueadoInterfaz de permisos o transferencia a Ajustes.El cambio en Ajustes, reinicio y regreso son etapas distintas.
La aplicación se activaSe solicita una nueva comprobación.Puede quedar un listener duplicado.
Montaje de integraciónPuede 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​

EstadoSignificadoRespuesta de mantenimiento
La agregación asíncrona indica concesiónSe trataron como verdaderas promesas de predicados.Corrige/espera todos los resultados; no declares completitud.
Rama prevista de Android 10El 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 retenidoLas comprobaciones pueden duplicarse tras el remontaje.Añade limpieza y pruebas de recuento de listeners.
Se abrió AjustesEl siguiente estado corresponde al SO.Vuelve a comprobar al regresar; no afirmes éxito automático.
Declaración nativa sin solicitud JavaScriptLa capacidad está empaquetada, pero no necesariamente se solicita/usa.Mantén esos hechos separados.
Integración disponibleEl 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