PhoneGap falta plist.key

Cuando bash cargar cargar mi instalador de aplicaciones de iTunes en iTunes alivio este error:

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

Falta la key Info.plist: esta aplicación intenta acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSCameraUsageDescription con un valor de cadena que explica al usuario cómo la aplicación utiliza estos datos.

¿Qué puedo agregar a mi file de configuration a continuación para permitir 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="prerendenetworking-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" /> 

EDITAR:

Mi antigua respuesta ya no funciona si tiene <preference name='phonegap-version' value='cli-7.0.1' /> (o si no tiene ninguna phonegap-version ya que lo usará como pnetworkingeterminado)

Para configurar las descripciones de uso, use los parameters 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 count que si tiene algunos complementos con las mismas descripciones de uso y no los rellena con tags param, podrían replacese con la cadena vacía pnetworkingeterminada

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

ANTIGUA RESPUESTA:

Puedes escribir en info.plist así:

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

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

Lo he probado en una aplicación de ejemplo y está funcionando https://github.com/jcesarmobile/phonegap-template-hello-world/blob/454e852955e66470890cba636450abd422f50598/config.xml#L153-L155

Abra su proyecto en xcode y vaya a su file .plist en la carpeta de resources,

Luego, al final de su file .plist, click "+" y agregue la búsqueda de " Privacidad – Descripción de uso de la biblioteca fotográfica " y agregue su valor al lado de la columna.

mismo haz " NSCameraUsageDescription " nuevamente haz clic en "+" y busca " Privacidad – Descripción de uso de camera " y vuelve a dar alguna descripción de uso en la columna al lado.

Te solucionará el problema.

Para get más información, visite siguiente:

1) Pregunta de flujo de astackmiento relacionada con su pregunta 2) Doc oficial de apple para que se agreguen todas las keys requeridas

Antes de acceder a datos confidenciales como la camera, los contactos, etc., debe solicitar la autorización, su aplicación se bloqueará cuando acceda a ellos. A continuación, Xcode registrará como:

Esta aplicación se ha bloqueado porque intentó acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una key NSContactsUsageDescription con un valor de cadena que explica 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 las classs de datos protegidos de su aplicación al include las keys de cadena de propósito apropiadas en su file Info.plist.

En su caso, puede que tenga que agregar lo siguiente en su info.plist,

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

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

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

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

Primero, probé la respuesta aceptada (la escrita por jcesarmobile). Cuando probé esto y ejecuté: phonegap build ios cada vez que se eliminaba la configuration de mi file config.xml. Entonces, probé la solución que se indica 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 github repo en el file. Sugiero que ejecute la compilation, copie el post de error y busque en los comentarios y haga lo que dicen. Una vez que lo compilé de nuevo, todavía no funcionaba al cargar la connection de iTunes.

Al final, tuve que abrir el file Info.plist y poner manualmente el 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 hizo exactamente lo que decía, sigo pensando que era importante porque antes de hacerlo todo se estaba borrando, y ahora se mantiene.

Espero que esto ayude a alguien.