the - NSCameraUsageDescription en iOS 10.0 runtime crash?
the app''s info plist must contain an nsphotolibraryaddusagedescription key (11)
Usando
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 usa estos datos.
¿Poner esta llave en la lista, pero aún así se bloqueó?
A medida que Apple ha cambiado, puede acceder a cualquier tipo de datos privados de usuarios en
iOS 10
.
Info.plist
agregar la clave "
Privacy - Camera usage description
" a la
Info.plist
información de su aplicación y su información de uso que se aplica a su aplicación, como en el siguiente ejemplo que he proporcionado que he usado para escanear códigos de barras.
Para obtener más información, encuentre la siguiente captura de pantalla.
Alternativamente, abra Info.plist como código fuente y agregue esto:
<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
Debe agregar esta clave a continuación en info.plist.
NSCameraUsageDescription
or
Privacy - Camera usage description
Y agregue una descripción del uso.
Capturas de pantalla detalladas están disponibles en este link
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 this enlace.
Otra instancia a la que me enfrenté al tratar de usar la cámara fue que todavía estaba ocupada
_CRASHING_DUE_TO_PRIVACY
dando el mismo
_CRASHING_DUE_TO_PRIVACY
incluso 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 falta de "Descripción del uso del micrófono".
Agregué eso y me deshice de un colapso tan críptico.
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 Info.plist 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.
Para ello, agregue una clave de uso a la Lista de información de su aplicación junto con una cadena de propósito. NSCameraUsageDescription Especifica el motivo por el cual su aplicación accede a la cámara del dispositivo
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.
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.
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>