Cuando trato de cargar y cargar mi instalador de aplicaciones de iTunes en iTunes, libero este error:

Falta la clave Info.plist: esta aplicación intenta acceder a datos sensibles a la privacidad sin una descripción del uso. El Info.plist de la aplicación debe contener una clave NSPhotoLibraryUsageDescription con un valor de cadena que explique al usuario cómo la aplicación utiliza estos datos.

Falta la clave Info.plist: esta aplicación intenta 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.

¿Qué puedo agregar a mi archivo de configuración a continuación para que esto funcione?

<preference name="permissions" value="none" />
    <preference name="orientation" value="default" />
    <preference name="target-device" value="universal" />
    <preference name="fullscreen" value="false" />
    <preference name="webviewbounce" value="false" />
    <preference name="disallowOverscroll" value="true" />
    <preference name="prerendered-icon" value="true" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="auto-hide-splash-screen" value="true" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="10" />
    <preference name="android-targetSdkVersion" value="19" />
    <preference name="android-installLocation" value="auto" />
    <gap:plugin name="org.apache.cordova.battery-status" source="npm" />
    <gap:plugin name="org.apache.cordova.camera" source="npm"/>    
    <gap:plugin name="org.apache.cordova.media-capture" source="npm"/>
    <gap:plugin name="org.apache.cordova.console" source="npm" />
    <gap:plugin name="org.apache.cordova.contacts" source="npm"/>

    <gap:plugin name="org.apache.cordova.device-motion" source="npm"/>
    <gap:plugin name="org.apache.cordova.device-orientation" source="npm"/>
    <gap:plugin name="org.apache.cordova.dialogs" source="npm"/>
    <gap:plugin name="org.apache.cordova.file" source="npm"/>
    <gap:plugin name="org.apache.cordova.file-transfer" source="npm"/>

    <gap:plugin name="org.apache.cordova.inappbrowser" source="npm"/>
    <gap:plugin name="org.apache.cordova.media" source="npm"/>
    <gap:plugin name="org.apache.cordova.network-information" source="npm"/>
    <gap:plugin name="org.apache.cordova.splashscreen" source="npm"/>
    <gap:plugin name="org.apache.cordova.vibration" source="npm"/>
    <icon src="icon.png" />

    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-ldpi" />
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-mdpi" />
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-hdpi" />
    <gap:splash src="splash.png" gap:platform="android" gap:qualifier="port-xhdpi" />
    <gap:splash src="splash.png" gap:platform="blackberry" />
    <gap:splash src="splash.png" gap:platform="ios" width="320" height="480" />
    <gap:splash src="splash.png" gap:platform="ios" width="640" height="960" />
    <gap:splash src="splash.png" gap:platform="ios" width="640" height="1136" />
    <gap:splash src="splash.png" gap:platform="ios" width="768" height="1024" />
    <gap:splash src="splash.png" gap:platform="ios" width="1024" height="768" />
    <gap:splash src="splash.png" gap:platform="winphone" />
    <access origin="*" />

    <gap:plugin name=" phonegap-plugin-barcodescanner" source="npm" />
    <gap:plugin name="uk.co.workingedge.phonegap.plugin.launchnavigator" source="npm" />
    <gap:plugin name="cordova-plugin-directions" source="npm" />


    <!-- iPhone / iPod Touch  - lower 4s -->
    <icon src="icon-57.png" gap:platform="ios" width="57" height="57" />
    <icon src="icon.png" gap:platform="ios" width="114" height="114" />
    <icon src="icon-72.png" gap:platform="ios" width="72" height="72" />
    <icon src="152.png" gap:platform="ios" width="152" height="152" />
    <icon src="icon-120.png" gap:platform="ios" width="120" height="120" />
    <icon src="76.png" gap:platform="ios" width="76" height="76" />
    <icon src="icon-40.png" gap:platform="ios" width="40" height="40" />

    <!-- iPhone / iPod Touch - 5-5s -->
    <icon src="icon.png" gap:platform="ios" width="60" height="60" />
    <icon src="icon.png" gap:platform="ios" width="120" height="120" />
    <!-- iPhone6-6+ -->
    <icon src="icon.png" gap:platform="ios" width="180" height="180" />

    <!-- Settings Icon -->
    <icon src="icon-29.png" gap:platform="ios" width="29" height="29" />
    <icon src="icon.png" gap:platform="ios" width="58" height="58" />

    <!-- Spotlight Icon -->
    <icon src="icon.png" gap:platform="ios" width="40" height="40" />
    <icon src="icon.png" gap:platform="ios" width="80" height="80" />

    <plugin name="cordova-plugin-whitelist" version="1" source="npm"/>

    <gap:plugin name="cordova-plugin-geolocation" source="npm"/>

    <feature name="http://api.phonegap.com/1.0/battery" />
    <feature name="http://api.phonegap.com/1.0/camera" />
    <feature name="http://api.phonegap.com/1.0/network" />
    <feature name="http://api.phonegap.com/1.0/notification" />

    <gap:plugin name="cordova-plugin-x-socialsharing" source="npm" />
8
Mike 7 ene. 2017 a las 22:45

6 respuestas

La mejor respuesta

Otra edición: La mayoría de los complementos eliminaron las variables para la descripción del uso, por lo que ahora la forma de configurarlas es usar la etiqueta edit-config en config.xml de esta manera.

<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="overwrite">
    <string>We are using the Camera for something...</string>
</edit-config>

Pero no todos los complementos se han actualizado todavía, así que mejor lea el archivo README.md del complemento antes. En los complementos principales está en una sección llamada iOS Quirks.

También necesita el cli 7.0.1 o más reciente, configúrelo en config.xml de esta manera:

<preference name="phonegap-version" value="cli-8.0.0" />

Editar:

Mi respuesta anterior ya no funciona si tienes <preference name='phonegap-version' value='cli-7.0.1' /> (o si no tienes phonegap-version ya que lo usará por defecto)

Para establecer las descripciones de uso, use los parámetros en el complemento

<plugin name="cordova-plugin-camera">
   <param name="CAMERA_USAGE_DESCRIPTION" value="We are using the Camera for something..." />
   <param name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="We are using the Photo Library for something..." />
</plugin>

Tenga en cuenta que si tiene algunos complementos con las mismas descripciones de uso y no los llena con etiquetas param, podrían reemplazarse con la cadena vacía predeterminada

Puede forzar el uso del antiguo generador con esta etiqueta, pero no se recomienda, el nuevo generador es mejor <preference name='pgb-builder-version' value='1' />

ANTIGUA RESPUESTA:

Puede escribir en la lista de información como esta:

<gap:config-file platform="ios" parent="NSCameraUsageDescription" overwrite="true">
   <string>We are using the Camera for something...</string>
</gap:config-file>

El overwrite="true" es importante porque la última versión del complemento de la cámara ya está escribiendo valores vacíos.

Lo probé en una aplicación de muestra y está funcionando https://githbile.com/ /phonegap-template-hello-world/blob/454e852955e66470890cba636450abd422f50598/config.xml#L153-L155

21
jcesarmobile 24 may. 2018 a las 17:58

Antes de acceder a datos sensibles a la privacidad como la cámara, los contactos, etc., debe solicitar la autorización, su aplicación se bloqueará cuando acceda a ellos. Luego, Xcode se registrará como:

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 NSContactsUsageDescription con un valor de cadena que explique al usuario cómo la aplicación utiliza estos datos.

Como lidiar con esto? Como dice la manzana:

Debe declarar estáticamente el uso previsto de su aplicación de clases de datos protegidos al incluir las claves de cadena de propósito apropiadas en su archivo Info.plist.

En su caso, es posible que deba agregar lo siguiente en su lista de información,

<!-- 🖼 Photo Library --> <key>NSPhotoLibraryUsageDescription</key> <string>$(PRODUCT_NAME) photo use</string>

También le sugiero que mire este enlace para obtener información más detallada sobre esto. Espero eso ayude.

También puede consultar este complemento que ayuda a manipular * -info.plist

1
Gandhi 20 ene. 2017 a las 14:46

En ios, debe instalar camera-plugin con barcodescanner-plugin después de poner la siguiente línea en config.xml para sobrescribir el archivo plist.

<gap:plugin name="phonegap-plugin-barcodescanner" source="npm" />

<preference name="android-build-tool" value="gradle" />

<config-file platform="ios" target="*-Info.plist" parent="NSCameraUsageDescription">
    <string>It is used for scaning QR code.</string>
</config-file>

<edit-config platform="ios" target="*-Info.plist" parent="NSCameraUsageDescription" mode="merge">
    <string>It is used for scaning QR code.</string>
</edit-config>

<config-file platform="ios" target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
    <string>It is used for scanning QR code</string>
</config-file>

<edit-config platform="ios" target="*-Info.plist" parent="NSPhotoLibraryUsageDescription" mode="merge">
    <string>It is used for scanning QR code</string>
</edit-config>
1
Himanshu 22 jun. 2018 a las 13:12

Abra su proyecto en xcode y vaya a su archivo .plist en la carpeta de recursos,

Luego, al final de su archivo .plist, haga clic en "+" y agregue la búsqueda " Privacidad - Descripción de uso de la biblioteca de fotos " y agregue su valor en la columna al lado.

Haga lo mismo para " NSCameraUsageDescription ", haga clic nuevamente en "+" y busque " Privacidad - Descripción de uso de la cámara " y nuevamente proporcione una descripción de uso en la columna al lado.

Resolverá tu problema.

Para obtener más información, visite lo siguiente:

1) Pregunta de Stackoverflow relacionada con tu pregunta 2) Documento oficial de Apple para todas las claves necesarias para ser añadido

2
Community 23 may. 2017 a las 12:25

Ninguna de las respuestas aquí me funcionó exactamente, así que creo que debería agregar mis dos centavos en cuanto a cómo hice que esto funcionara.

Primero, probé la respuesta aceptada (la escrita por jcesarmobile). Cuando probé esto y ejecuté: phonegap build ios cada vez que se eliminó la configuración de mi archivo config.xml. Entonces probé la solución indicada aquí:

http://geeklearning.io/how-to-add-specific-configuration-parameters-to-ios-p-list-and-android-manifest/

Esto no funcionó al principio. Hubo una serie de cambios que tuvieron que hacerse, todos los cuales obtuve de los comentarios del repositorio de github en el archivo. Le sugiero que ejecute la compilación, copie el mensaje de error y busque en los comentarios y haga lo que dicen. Una vez que conseguí compilarlo de nuevo, aún no funcionó al cargar itunes connect.

Al final tuve que abrir el archivo Info.plist y poner manualmente lo siguiente

<key>NSCameraUsageDescription</key>
<string>We are using the Camera to (blah blah blah, your explanation)</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We are using the Photo Library to (your reason)</string>
<key>NSMainNibFile</key>

Aunque el gancho no funcionó exactamente como decía, sigo pensando que era importante porque antes de hacerlo todo se estaba borrando, y ahora se mantiene.

Espero que ésto ayude a alguien.

0
Dallas Caley 25 sep. 2017 a las 18:22

Phonegap Build: para cualquiera que use cli-7.0.1 como probablemente todos deberían hacerlo ahora:

<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="overwrite">
    <string>Used to allow the user to select media to upload to us</string>
</edit-config>

Eso NO va dentro de la etiqueta, simplemente dentro de la etiqueta Widget como todo lo demás. Cambie la cuerda por la que más le convenga.

0
klidifia 25 oct. 2017 a las 21:10