web-dev-qa-db-fra.com

PhoneGap manquant plist.key

Lorsque j'essaie de charger et de télécharger mon installateur d'application iTunes sur iTunes, je relève le problème.

Clé Info.plist manquante - Cette application tente d'accéder à des données Confidentielles sans description d'utilisation. Info.plist de l'application doit contenir une clé NSPhotoLibraryUsageDescription avec une valeur de chaîne expliquant à L'utilisateur comment l'application utilise ces données.

Clé Info.plist manquante - Cette application tente d'accéder à des données Confidentielles sans description d'utilisation. Info.plist de l'application doit contenir une clé NSCameraUsageDescription avec une valeur de chaîne expliquant à l'utilisateur Comment l'application utilise ces données.

Que puis-je ajouter à mon fichier de configuration ci-dessous pour que cela fonctionne:

<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

Une autre modification: La plupart des plugins ont supprimé les variables pour la description de l'utilisation. La méthode pour les définir consiste à utiliser la balise edit-config dans le fichier config.xml comme ceci.

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

Mais tous les plugins n'ont pas encore été mis à jour, il est donc préférable de lire le fichier README.md du plugin auparavant. Sur les plugins principaux, il se trouve dans une section appelée iOS Quirks.

Il a également besoin de la version 7.0.1 ou plus récente de cli. Configurez-le dans le fichier config.xml comme suit:

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

MODIFIER:

Mon ancienne réponse ne fonctionne plus si vous avez <preference name='phonegap-version' value='cli-7.0.1' /> (ou si vous n'avez aucun phonegap-version car il l'utilisera par défaut)

Pour définir les descriptions d’utilisation, utilisez les paramètres du plugin

<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>

Attention, si vous avez des plugins avec les mêmes descriptions d'utilisation et que vous ne les remplissez pas avec des balises param, ils pourraient être remplacés par la chaîne vide par défaut

Vous pouvez forcer l'utilisation de l'ancien générateur avec cette balise, mais ce n'est pas recommandé, le nouveau constructeur est meilleur <preference name='pgb-builder-version' value='1' />

ANCIENNE REPONSE:

Vous pouvez écrire dans l'info.plist comme ceci:

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

Leoverwrite="true"est important car la dernière version du plug-in de l'appareil photo écrit déjà des valeurs vides.

Je l'ai testé sur un exemple d'application et il fonctionne https://github.com/jcesarmobile/phonegap-template-hello-world/blob/454e852955e66470890cba636450abd422f50598/config.xml#L153

19
jcesarmobile

Veuillez ouvrir votre projet en xcode et aller à votre fichier .plist dans le dossier des ressources,

Puis, à la fin de votre fichier .plist, cliquez sur "+" et ajoutez la recherche " Confidentialité - Description de l'utilisation de la photothèque " et ajoutez sa valeur dans la colonne à côté.

même s'il vous plaît faire pour " NSCameraUsageDescription " cliquez à nouveau sur "+" et recherchez " Confidentialité - Description de l'utilisation de la caméra " et donnez à nouveau une description de l'utilisation dans la colonne à côté.

ça va vous résoudre le problème.

Pour plus d'informations, visitez les sites suivants:

1) Question Stackoverflow liée à votre question 2) Doc Apple officiel pour toutes les clés requises à ajouter

2
Naitik

Avant d'accéder à des données confidentielles telles que Appareil photo, Contacts, etc., vous devez demander une autorisation. Votre application se bloquera automatiquement lorsque vous y aurez accès. Ensuite, Xcode se connectera de la manière suivante:

Cette application s'est bloquée car elle a tenté d'accéder à des données confidentielles sans description d'utilisation. Info.plist de l'application doit contenir une clé NSContactsUsageDescription avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données.

Comment gérer cela? Comme le dit Apple:

Vous devez déclarer de manière statique l’utilisation prévue des classes de données protégées par votre application en incluant les clés de chaîne de destination appropriées dans votre fichier Info.plist.

Dans votre cas, vous devrez peut-être ajouter ce qui suit dans votre info.plist,

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

Nous vous suggérons également de regarder ceci link pour des informations plus détaillées à ce sujet. J'espère que ça aide.

Vous pouvez également consulter ce plugin qui facilite la manipulation de * -info.plist

1
Gandhi

Aucune des réponses ici ne fonctionnait pour moi exactement alors je pense que je devrais ajouter mes deux centimes quant à la façon dont cela a fonctionné.

J'ai d'abord essayé la réponse acceptée (celle écrite par jcesarmobile). Lorsque j'ai essayé ceci et que j'ai lancé: phonegap build ios à chaque fois que la configuration a été supprimée de mon fichier config.xml. J'ai ensuite essayé la solution indiquée ici:

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

Cela n'a pas fonctionné au début. Il y avait un certain nombre de modifications à apporter, qui ont toutes été générées par les commentaires de github repo sur le fichier. Je vous suggère d'exécuter la construction, de copier le message d'erreur, de rechercher dans les commentaires et de faire ce qu'ils disent. Une fois que je l'ai reconstruit, cela ne fonctionnait toujours pas après le téléchargement du iTunes Connect. 

À la fin, j’ai dû ouvrir le fichier Info.plist et y placer manuellement les éléments suivants:

<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>

Même si le crochet n'a pas fonctionné exactement comme il l'a prétendu, je pense toujours que c'était important, car auparavant, tout était en train d'être supprimé et maintenant, il reste en place.

J'espère que ça aide quelqu'un.

0
Dallas Caley

Phonegap Build - pour toute personne utilisant cli-7.0.1 car tout le monde devrait probablement l'être maintenant:

<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>

Cela ne va PAS dans la balise, mais simplement dans la balise Widget, comme tout le reste. Changez la chaîne comme bon vous semble.

0
klidifia

Dans iOS, vous devez installer camera-plugin avec barcodescanner-plugin après avoir placé la ligne ci-dessous dans config.xml pour écraser le fichier 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>
0
Himanshu