Cordova Info.nscamerausagedescription manque de clé

après des modifications récentes, Apple a besoin de clés spécifiques si votre application tente d'accéder à des données sensibles à la protection de la vie privée. J'ai donc ajouté la clé NSCameraUsageDescription dans ma configuration.xml comme ceci:

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

cordova build ios --release --device

produit l'ipa qui apparemment n'a pas la bonne information dans l'information.plist. Il se sent comme je suis en manque de quelque chose.

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

Merci!

19
demandé sur Pavel Kovalev 2016-09-19 09:48:53

8 réponses

NOUVELLE RÉPONSE:

depuis Cordova CLI 6.5.0 vous pouvez écrire dans le info.plist directement en utilisant le edit-config dans la balise 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 ou les valeurs peuvent être écrasées par les variables du plugin.

Pour les localisations, vous pouvez utiliser le resource-file et la balise de InfoPlist.strings fichiers comme dans ce plugin (mais vous n'avez pas besoin du plugin, resource-file tag est supporté à partir du config.xml)

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

ANCIENNE RÉPONSE:

Vous ne pouvez pas écrire sur le info.plistconfig.xmlconfig-file balise encore (elle est en cours d'élaboration)

la dernière version du plugin camera vous permet d'ajouter le NSCameraUsageDescription quand vous installez le plugin

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

en ce moment il n'est pas possible de localiser cette chaîne

24
répondu jcesarmobile 2018-05-14 09:35:04

Voici les résultats de mes propres recherches:

    • Oui, vous pouvez modifier info.plist config.xml le fichier en utilisant la balise config-file,mais vous devez utiliser un plugin pour ça (cordova personnalisé config) et suivre les instructions religieusement.
    • cependant, probablement une meilleure option est d'utiliser plugin.xml pour faire la même chose. Vous pouvez lire plus à ce sujet ici (modifiant l'info plist de plugin.xml)
    • une autre option comme @jcesarmobile mentionné - le plugin de caméra actuel peut le supporter comme plugin cordova appareil photo (cette solution est spécifique au plugin)

s'il vous plaît, corrigez-moi si je me trompe. Plus d'informations sur la localisation directement à partir de config.xml est apprécié.

Personnellement, je n'aime pas l'idée d'utiliser un plugin personnalisé pour modifier un info.plist fichier. Il se sent comme avec chaque nouveau plugin que j'utilise rendre mon application de plus en plus fragile. :)

6
répondu Pavel Kovalev 2017-05-23 10:31:18

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 ex. cordova-plugin-barcodescanner et cordova-plugin-caméra et cordova-plugin-ios-caméra-autorisations toutes les variables CAMERA_USAGE_DESCRIPTION, PHOTOLIBRARY_USAGE_DESCRIPTION devraient avoir la même chaîne à l'intérieur de. Si l'un d'eux est différent apple rejette votre ipa, parce que phonegap utiliser 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) ajouter ce code (n'oubliez pas d'utiliser la même chaîne de caractères 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
répondu Vero O 2018-04-13 19:24:54

vous pouvez éditer 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 m'inquiète à un moment donné que mes modifications risquent d'être trop écrites.

mais sur l'aide!

le .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 le long du côté gauche, cliquez sur l'icône de la Loupe qui vous permettra de rechercher des fichiers dans le projet. Si vous entrez info.plist il doit retourner un résultat qui montre que quelque chose comme:

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

ce chemin doit être relatif à votre installation de projet Cordova de sorte que la recherche dans votre projet devrait vous mener au bon fichier.

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

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

j'ai été en mesure de présenter et de faire mon build de se montrer et de séjour dans itunesconnect. Actuellement toujours en attente d'application de l'examen.

je n'ai couru un cordova prepare ios juste pour tester si mes modifications seraient trop écrites ce qu'elles n'ont pas fait alors il semble que vous devriez être en mesure de le faire et ne pas vous en inquiéter mais être lasse des autres devs installant votre application et courant dans le même problème. Je viens de copier ma mise à jour .fichier plist dans la racine de mon repo et noter dans le fichier readme.

2
répondu bondydaa 2016-10-20 20:39:21
$ 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-que-jamais/plugin.xml pour voir quel type de clé noms sont pris en charge.

0
répondu masayang 2017-01-26 21:30:35

Aller à votre projet >> Ouvrir un Terminal, il

et exécutez la 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 "permettre à l'application d'utiliser votre appareil photo" "permettre à l'application d'accéder à vos photos" selon vos besoins.

0
répondu Raghav 2017-12-10 04:55:08
cordova-plugin-ios-caméra-autorisations comme raccourci.

fournit une documentation par défaut et claire sur la façon 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 la supprimer et de la rajouter à nouveau.

$ cordova platform rm ios
$ cordova platform add ios
0
répondu Ken Colton 2018-03-13 05:37:29

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

Enfin, j'ai défini ces données avec Xcode Info onglet sur la ligne

Privacy - Camera usage description

enter image description here

cela me fait gagner beaucoup de temps.

0
répondu jedema 2018-08-28 23:47:28