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!
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.plist
config.xml
config-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
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)
- Oui, il est possible de localisez une chaîne dans l'info.fichier plistmais il faut utiliser xcode pour cela. Je ne sais pas comment localiser une chaîne à l'intérieur info.fichier plist utilisant Cordova config.xml ou plugin.xml
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. :)
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>
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.
$ 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.
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"
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.
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
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
cela me fait gagner beaucoup de temps.