web-dev-qa-db-fra.com

Cordova Info.plist NSCameraUsageDescription clé manquante

Après les dernières modifications, Apple requiert des clés spécifiques si votre application tente d'accéder à des données confidentielles. J'ai donc ajouté la clé NSCameraUsageDescription dans mon fichier config.xml comme ceci:

<platform name="ios">
    <config-file parent="NSCameraUsageDescription" target="*-Info.plist">
        <string>We are using a camera to </string>
    </config-file>
</platform>

Ensuite

cordova build ios --release --device

produit l'ipa qui apparemment n'a pas la bonne information dans info.plist. J'ai l'impression de rater quelque chose.

Question 1: Que dois-je mettre dans config.xml pour résoudre le problème NSCameraUsageDescription? Question 2: Est-il possible d'utiliser la localisation pour cette chaîne?

Je vous remercie!

21
Pavel Kovalev

NOUVELLE RÉPONSE:

Depuis Cordova CLI 6.5.0, vous pouvez écrire le info.plist directement en utilisant la balise edit-config dans le config.xml comme ceci:

<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge"> <string>your usage message</string> </edit-config> Mais assurez-vous que vous utilisez la dernière version des plugins, sinon les valeurs pourraient être écrasées par les variables du plugin.

Pour les localisations, vous pouvez utiliser les balises resource-file et InfoPlist.strings comme dans ce plugin (mais vous n'avez pas besoin du plugin, la balise resource-file est prise en charge à partir du fichier config.xml).

https://github.com/MBuchalik/cordova-plugin-ios-permissions

ANCIENNE REPONSE:

Vous ne pouvez pas encore écrire sur le info.plist à partir du config.xml en utilisant la balise config-file (en cours d'élaboration)

La dernière version du plugin camera vous permet d’ajouter la NSCameraUsageDescription lors de l’installation du plugin. 

cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="your usage message"

À l'heure actuelle, il n'est pas possible de localiser cette chaîne

27
jcesarmobile

Tout d'abord, cela fonctionne pour moi avec Cli-7.1.0 après qu'Apple ait rejeté mon ipa.

1) Dans votre code, si vous utilisez par ex. cordova-plugin-barcodescanner et cordova-plugin-camera et cordova-plugin-ios-camera-permissions toutes les variables CAMERA_USAGE_DESCRIPTION, PHOTOLIBRARY_USAGE_DESCRIPTION doivent avoir la même chaîne à l'intérieur de. Si l'un d'entre eux est différent, Apple rejette votre ipa, car phonegap utilise la variable par défaut.

ej:

<plugin name="cordova-plugin-ios-camera-permissions" >
     <variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
     <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</plugin><!-- spec="1.0.3" !-->

<plugin name="cordova-plugin-camera" > 
     <variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
     <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />

<gap:plugin name="cordova-plugin-image-picker" source="npm" />
<gap:plugin name="cordova-plugin-base64-joewsh" source="npm" />   <!-- convertir a base64 los files !-->


<gap:plugin name="cordova-plugin-barcodescanner"   source="npm" spec="0.7.0" >

     <variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</gap:plugin>

2) ajoutez ce code (n'oubliez pas d'utiliser la même chaîne dans les variables, comme je l'ai déjà mentionné):

<platform name="ios">

     <edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
          <string>YOUR-PERMISSION-REQUEST</string>
     </edit-config>
     <edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge" overwrite="true" >
          <string>YOUR-PERMISSION-REQUEST</string>
     </edit-config>
     <edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
          <string>YOUR-PERMISSION-REQUEST</string>
     </edit-config>
</platform>
3
Vero O

Vous pouvez modifier manuellement le fichier .plist dans votre projet cordova si vous le souhaitez. Cela a fonctionné pour moi, mais comme il s'agit d'un fichier généré, je crains que mes modifications ne soient écrasées. 

Mais pour aider!

Le fichier .plist doit être situé dans votre projet Cordova dans le /platforms/ios/[Cordova Project Name]/[Cordova Project Name]-Info.plist. Vous pouvez également ouvrir le projet dans Xcode et cliquer sur l’icône Loupe sur le côté gauche pour rechercher des fichiers dans le projet. Si vous entrez dans info.plist, le résultat obtenu devrait ressembler à ceci:

INFOPLIST_FILE = [Some]/[Path]/[Cordova Project Name]-Info.plist

Ce chemin doit être relatif à l’installation de votre projet Cordova afin que la recherche dans votre projet vous conduise au bon fichier.

J'ai ouvert ce fichier dans mon éditeur et ajouté les lignes suivantes juste à l'intérieur de la première balise d'ouverture <dict>:

<key>NSCameraUsageDescription</key> <string>Uses camera to allow video chatting between two clients</string>

J'ai pu soumettre et faire en sorte que ma construction apparaisse et reste in itunesconnect. Actuellement en attente d'examen de l'application.

J'ai exécuté un cordova prepare ios uniquement pour vérifier si mes modifications étaient écrites et non écrites. Il semble donc que vous devriez pouvoir le faire sans vous inquiéter, mais soyez fatigué que d'autres développeurs installent votre application et rencontrent le même problème . Je viens de copier mon fichier .plist mis à jour dans la racine de mon référentiel et de le noter dans le fichier Lisez-moi.

2
bondydaa

J'ai cherché beaucoup de temps et essayé de nombreuses solutions sans succès.

Enfin, j’ai défini ces données avec Xcode dans l’onglet Info de la ligne 

Privacy - Camera usage description

 enter image description here

Cela me fait gagner beaucoup de temps.

0
jedema
$ cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="this app will use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="this app will access to your photo library"

Vous devez lire à l'intérieur de ./plugins/plugin-what-ever/plugin.xml pour voir quels types de noms de clés sont pris en charge.

0
masayang

Accédez à votre projet >> Ouvrez Terminal ici

et lancez cette commande

cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="Allow the app to use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="Allow the app to access your photos"

 enter image description here

Vous pouvez garder modifier les valeurs "Autoriser l'application à utiliser votre appareil photo" "" Autoriser l'application à accéder à vos photos "en fonction de vos besoins.

0
Raghav

Pour iOS 10/11, vous pouvez utiliser cordova-plugin-ios-camera-permissions comme raccourci.

Fournit des valeurs par défaut et une documentation claire sur la manière de fournir des messages personnalisés.

cordova plugin add cordova-plugin-ios-camera-permissions --save

Si vous avez déjà configuré la plate-forme iOS, il peut être nécessaire de supprimer et d'ajouter de nouveau.

$ cordova platform rm ios
$ cordova platform add ios
0
Ken Colton