NSCameraUsageDescription en iOS 10.0 runtime crash?

154

Usando la iOS 10.0última beta. Intenté usar la Cámara para escanear el código de barras en mi aplicación, y se bloqueó con este error de tiempo de ejecución.

Esta aplicación se ha bloqueado porque intentó acceder a datos sensibles a la privacidad sin una descripción del uso. El Info.plist de la aplicación debe contener una clave NSCameraUsageDescription con un valor de cadena que explique al usuario cómo la aplicación utiliza estos datos.

¿Poner esta llave en la lista, pero aún así se bloqueó?

usuario3069232
fuente
66
Tengo el mismo problema, agregué NSCameraUsageDescription en info.plist, pero aún se bloquea con el mismo mensaje. ¿Has logrado resolverlo? Aparentemente, nadie que respondió a este problema entendió que se bloquea incluso si ya agregó la clave.
CarmenA
Si agregó la entrada al archivo info.plist correcto, pero aún así falló, puede ser porque Xcode a veces no nota cambios en los archivos de recursos como info.plist, imágenes, audio, películas, etc. Es posible que deba realizar un limpie o elimine el producto de compilación de la aplicación de la carpeta Datos derivados para forzar a Xcode a usar la última versión.
Walt Sellers

Respuestas:

227

Después de iOS 10, debe definir y proporcionar una descripción de uso de todos los datos sensibles a la privacidad del sistema a los que accede su aplicación en Info.plist como se muestra a continuación:

Calendario

Key    :  Privacy - Calendars Usage Description    
Value  :  $(PRODUCT_NAME) calendar events

Recordatorio:

Key    :   Privacy - Reminders Usage Description    
Value  :   $(PRODUCT_NAME) reminder use

Contacto:

Key    :   Privacy - Contacts Usage Description     
Value  :  $(PRODUCT_NAME) contact use

Foto:

Key    :  Privacy - Photo Library Usage Description    
Value  :  $(PRODUCT_NAME) photo use

Compartir Bluetooth:

Key    :  Privacy - Bluetooth Peripheral Usage Description     
Value  :  $(PRODUCT_NAME) Bluetooth Peripheral use

Micrófono:

Key    :  Privacy - Microphone Usage Description    
Value  :  $(PRODUCT_NAME) microphone use

Cámara:

Key    :  Privacy - Camera Usage Description   
Value  :  $(PRODUCT_NAME) camera use

Ubicación :

Key    :  Privacy - Location Always Usage Description   
Value  :  $(PRODUCT_NAME) location use

Key    :  Privacy - Location When In Use Usage Description   
Value  :  $(PRODUCT_NAME) location use

Heath:

Key    :  Privacy - Health Share Usage Description   
Value  :  $(PRODUCT_NAME) heath share use

Key    :  Privacy - Health Update Usage Description   
Value  :  $(PRODUCT_NAME) heath update use

HomeKit:

Key    :  Privacy - HomeKit Usage Description   
Value  :  $(PRODUCT_NAME) home kit use

Mediateca :

Key    :  Privacy - Media Library Usage Description   
Value  :  $(PRODUCT_NAME) media library use

Movimiento:

Key    :  Privacy - Motion Usage Description   
Value  :  $(PRODUCT_NAME) motion use

Reconocimiento de voz :

Key    :  Privacy - Speech Recognition Usage Description   
Value  :  $(PRODUCT_NAME) speech use

SiriKit:

Key    :  Privacy - Siri Usage Description  
Value  :  $(PRODUCT_NAME) siri use

Proveedor de TV:

Key    :  Privacy - TV Provider Usage Description   
Value  :  $(PRODUCT_NAME) tvProvider use

Puede obtener información detallada en este enlace.

Bhoopi
fuente
1
Privacy - Photo Library Usage Descriptionlo hizo por el errorNSPhotoLibraryUsageDescription
Bruno Bieri
Soy nuevo en Apple Development y este problema fue molesto. Me alegro de haberlo encontrado. ¡Salud!
user2529011
1
@MaylorTaylor: Sí, tienes que agregarlo.
Bhoopi
111

A medida que Apple ha cambiado, puede acceder a los tipos de datos privados de cualquier usuario iOS 10.

Debe agregar la Privacy - Camera usage descriptionclave " " a la información de su aplicación Info.plisty de su uso, que se aplica a su aplicación, como en el ejemplo a continuación que proporcioné para escanear códigos de barras.

Para obtener más información, encuentre la siguiente captura de pantalla.

ingrese la descripción de la imagen aquí

Ramkrishna Sharma
fuente
62

Debe agregar esta clave a continuación en info.plist.

NSCameraUsageDescription O Privacy - Camera usage description

Y agregue una descripción del uso.

Capturas de pantalla detalladas están disponibles en este enlace

Alas azules
fuente
Parece que ya lo agregó, pero aún así sufrió el accidente. Es el mismo problema que estoy teniendo, aunque ese KVP está en la lista, sigue fallando como si no lo estuviera.
43

Alternativamente, abra Info.plist como código fuente y agregue esto:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
ayalcinkaya
fuente
44
en caso de que alguien esté buscando localizar la "NSCameraUsageDescription", agregue "NSCameraUsageDescription" = "Requires access to the camera";su archivo infoPlist.strings localizado
Khurram Shehzad el
30

Use estos valores brutos y copie en info.plist

    <key>NSCalendarsUsageDescription</key>
      <string>$(PRODUCT_NAME) calendar events</string>
    <key>NSRemindersUsageDescription</key>
      <string>$(PRODUCT_NAME) reminder use</string>
    <key>NSCameraUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSMicrophoneUsageDescription</key>
      <string>This app requires to access your microphone to record video with your voice send via chat</string>
    <key>NSPhotoLibraryUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSContactsUsageDescription</key>
       <string>$(PRODUCT_NAME) contact use</string>
    <key>NSLocationAlwaysUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationWhenInUseUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
Zeeshan
fuente
de usted tiene estos nombres clave sin procesar?
Omar N Shamali
Esto es genial. Me salvó de hacer muchos clics en xCode
MaylorTaylor
26

la interfaz de usuario de xcode ha cambiado un poco de una versión a la siguiente, así que aquí es donde actualiza el plist para 9.0 beta 4 si ayuda a Project -> Target -> Infoingrese la descripción de la imagen aquí

usuario3325025
fuente
2
¡Esta debería ser la respuesta aceptada! Estaba teniendo este mismo problema en XCode 9.2, a pesar de que ya había agregado <key>NSCameraUsageDescription</key>a info.plist .
psantos
2
Respuesta definitivamente aceptada !! Tengo dos objetivos en mi proyecto, e intenté agregar esto <key>NSCameraUsageDescription</key>al segundo archivo info.plist , pero sin ningún efecto, y puedo confirmar que XCode (10.1) definitivamente no está teniendo en cuenta esos cambios ejecutando el estado de git , porque mi info.plist para otro objetivo no tuvo ningún cambio. Entonces, la forma correcta es pasar por el Proyecto-> Destino-> Información . ¡Gracias hombre!
bra.Scene
4

Otra instancia a la que me enfrenté al tratar de usar la cámara, fue que todavía estaba ocupado fallando dándole lo mismo _CRASHING_DUE_TO_PRIVACYincluso después de agregar la "Descripción del uso de la cámara". Después de no poder obtener nada tangible de la pila de llamadas, cambió al "Organizador" y examinó los informes de fallas en el dispositivo. Descubrí que, de hecho, se quejaba de la privacidad debido a la "Descripción de uso del micrófono" que faltaba. Agregué eso y me deshice de un colapso tan críptico.

Yoku
fuente
4

Para aquellos que todavía reciben el error a pesar de que agregó las claves adecuadas en Info.plist:

Asegúrese de agregar la clave en la lista de información correcta. La versión más nueva de xCode, aparentemente tiene 3 Info.plist.

Uno está debajo de la carpeta con el nombre de su aplicación, lo que me resolvió el problema.

El segundo está bajo YourappnameTests y el tercero está bajo YourappnameUITests.

Espero eso ayude.

Vetuka
fuente
2

Si está utilizando Ionic, puede resolverlo directamente desde config.xml agregando la etiqueta ios de la plataforma interna:

<platform name="ios">
.
.
.
    <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
        <string>photo library usage description</string>
    </config-file>
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
        <string>camera usage description</string>
    </config-file>
.
.
.
</platform>

Me gustaría agradecer a @BHUPI la respuesta también.

Victor Tavares
fuente
1

Revisé el plist y descubrí que no funciona, solo en la información del "proyecto", debe agregar "Privacidad - Cámara ...", entonces debería funcionar. Espero poder ayudarte.

Mark90
fuente
0

Tuve el mismo problema y no pude encontrar una solución. Mark90 tiene razón, hay muchos archivos info.plist y debe editar el correcto. Vaya a Proyecto, en OBJETIVOS seleccione el proyecto (no las pruebas), en la barra de pestañas seleccione Información y agregue el permiso en " Propiedades de destino de iOS personalizadas ".

Michael Marinos Likouras
fuente