es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Desarrollo de complemento Flutter y código nativo de iOS: ¿cómo evitar solicitar permisos al iniciar la aplicación?

Hola a todos y gracias de antemano por su tiempo y dedicación en ayudar.

Estoy desarrollando un complemento de Flutter que requiere acceso al micrófono. He conseguido hacerlo, pero cuando pruebo el complemento (ya sea con el ejemplo o utilizando una aplicación nueva o existente), me encuentro con el siguiente problema relacionado con los permisos del micrófono:

Contexto inicial:

El propio complemento NO solicita permisos. Esto es parte de un desarrollo más grande y la idea es que la aplicación solicite los permisos en una pantalla tipo asistente. Lo que hace el complemento es verificar si se ha otorgado un permiso determinado (en este caso, el permiso del micrófono).

Escenario 1: falta NSMicrophoneUsageDescription en Info.plist

En este caso, al ejecutar la aplicación en un dispositivo real (siempre hablando en el contexto de la depuración), se bloqueará automáticamente. En este punto, no estoy llamando a ningún método que pueda intentar utilizar el micrófono. De hecho, si estoy trabajando con una nueva aplicación y solo agrego la dependencia sin importar nada, la aplicación se bloqueará y mostrará el siguiente mensaje:

Esta aplicación ha dejado de funcionar porque ha intentado acceder a datos sensibles a la privacidad sin una descripción de uso. El archivo Info.plist de la aplicación debe contener una clave NSMicrophoneUsageDescription con un valor de cadena que explique al usuario cómo utiliza la aplicación estos datos.

Escenario 2: NSMicrophoneUsageDescription está presente en Info.plist

Esto soluciona el bloqueo, pero también provoca que la aplicación solicite el permiso del micrófono tan pronto como se inicia. Esto estaría bien, pero entra en conflicto con el requisito de la pantalla del asistente.

Como no soy un experto en desarrollo de complementos de Flutter, puede que este sea el flujo normal, pero me resultaría extraño. Si este es el caso, ¿hay alguna forma de evitar que la aplicación solicite el permiso para que pueda hacerlo bajo demanda?

Gracias de nuevo.

edición 1:

Se me pidió mostrar código, pero simplemente agregar la biblioteca como dependencia provoca esto.

¿Es posible que esto sea simplemente un problema de depuración?

edición 2:

El problema radica en un patrón singleton en el inicio de la raíz del complemento que inicializa el código nativo de iOS. Gracias a todos.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Querida comunidad,

    Actualmente estoy desarrollando un complemento de Flutter que requiere acceso al micrófono. Sin embargo, estoy experimentando algunos problemas con el permiso del micrófono al probar el complemento, y apreciaría cualquier ayuda que puedan brindar.

    Para dar un poco de contexto, el complemento en sí no solicita permiso para usar el micrófono, ya que esto es algo que se manejará en la aplicación en una pantalla similar a un asistente. El complemento simplemente verifica si se ha concedido o no el permiso.

    Hay dos escenarios que he encontrado:

    Escenario 1: NSMicrophoneUsageDescription está ausente en Info.plist

    Si NSMicrophoneUsageDescription está ausente en el archivo Info.plist, al ejecutar la aplicación en un dispositivo real se producirá un bloqueo automático. Esto ocurre incluso si no estoy utilizando ningún método que intente acceder al micrófono. Simplemente agregar la dependencia del complemento sin importar nada es suficiente para causar el bloqueo, con el siguiente mensaje de error:

    “Esta aplicación se bloqueó porque intentó acceder a datos sensibles a la privacidad sin una descripción de uso. El archivo Info.plist de la aplicación debe contener una clave NSMicrophoneUsageDescription con un valor de cadena que explique al usuario cómo utiliza esta aplicación estos datos.”

    Escenario 2: NSMicrophoneUsageDescription está presente en Info.plist

    Si NSMicrophoneUsageDescription está presente en el archivo Info.plist, el bloqueo ya no ocurre. Sin embargo, la aplicación solicitará permiso para usar el micrófono tan pronto como se inicie, lo cual entra en conflicto con el requisito de la pantalla del asistente.

    Como no soy un experto en el desarrollo de complementos de Flutter, no estoy seguro si esto es el flujo normal o no. En caso afirmativo, ¿hay alguna forma de evitar que la aplicación solicite permiso para que pueda solicitarlo según sea necesario?

    Me pidieron que mostrara código, pero simplemente agregar la biblioteca como dependencia genera este problema. ¿Podría ser solo un problema de depuración?

    Gracias a todos por su ayuda.

    editar 1:

    Me han pedido que proporcione código, pero agregar la biblioteca como dependencia sin importar nada genera este problema, por lo que no puedo proporcionar fragmentos de código relevantes.

    ¿Podría ser solo un problema de depuración?

    editar 2:

    He descubierto que el problema es causado por un patrón de singleton en la raíz del complemento, que inicializa el código nativo de iOS. Gracias a todos los que me ayudaron a identificar el problema.

Comments are closed.