Mon application ionique pour iOS a bien fonctionné jusqu’au jour où j’ai voulu faire une nouvelle construction.
Voici ce que Apple a renvoyé:
Cher développeur,
Nous avons découvert un ou plusieurs problèmes liés à votre livraison récente pour "Nom de l'application". Pour traiter votre livraison, le suivant les problèmes doivent être corrigés:
Cette application tente d'accéder à des données confidentielles sans utilisation la description. Info.plist de l'application doit contenir un NSPhotoLibraryUsageDescription avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données.
Cette application tente d'accéder à des données confidentielles sans utilisation la description. Info.plist de l'application doit contenir un NSCameraUsageDescription clé avec une valeur de chaîne expliquant à la utilisateur comment l'application utilise ces données.
Bien que vous ne soyez pas obligé de résoudre les problèmes suivants, nous voulions vous en rendre compte:
Droits de notification push manquants - Votre application comprend une API pour Le service de notification push d'Apple, mais le droit aps-environment est manquant dans la signature de l'application. Pour résoudre ce problème, assurez-vous que votre L'application ID est activée pour la notification Push dans le portail de provisionnement . Ensuite, signez votre application avec un profil de provisionnement de distribution qui inclut le droit aps-environment. Cela créera le correct signature, et vous pouvez resoumettre votre application. Voir "Provisioning and Development" dans le Guide de programmation des notifications locales et push pour Plus d'information. Si votre application n'utilise pas la notification Apple Push Notification service, aucune action n'est requise. Vous pouvez supprimer l'API de la future soumissions pour arrêter cet avertissement. Si vous utilisez un framework tiers, vous devrez peut-être contacter le développeur pour plus d'informations sur la suppression du fichier API.
Ce sont mes dépendances:
"ngstorage": "~0.3.10",
"ion-image-lazy-load": "*",
"ngCordova": "~0.1.24-alpha",
Et j'utilise le scanner de codes à barres dans ngCordova. Alors j'ai fait ceci:
$ cordova plugin rm phonegap-plugin-barcodescanner
$ cordova plugin add phonegap-plugin-barcodescanner --variable CAMERA_USAGE_DESCRIPTION="Scan QR-Codes" --save
Le config.xml
a ceci dans le bas maintenant:
<plugin name="cordova-plugin-camera" spec="~1.2.0">
<variable name="CAMERA_USAGE_DESCRIPTION" value="description" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="description" />
</plugin>
<plugin name="phonegap-plugin-barcodescanner" spec="https://github.com/phonegap/phonegap-plugin-barcodescanner.git">
<variable name="CAMERA_USAGE_DESCRIPTION" value="Scan QR-Codes" />
</plugin>
Mais je reçois toujours le même courrier électronique d’Apple que mon application pose un ou plusieurs problèmes.
Bien que presque tous les plugins Cordova soient maintenant mis à jour pour prendre en charge une description de l'utilisation sensible à l'utilisateur. Par exemple, mettez à jour votre version du plug-in de code-barres vers la dernière version (à partir du 7 novembre 2016) où ils ont ajouté un support pour la description d'utilisation:
<plugin name="phonegap-plugin-barcodescanner" spec="~6.0.3">
Mais si vous ne trouvez pas encore de plug-in le prenant en charge et que vous devez définir la description dans *-Info.plist
, veuillez alors VOUS DEVEZ VOUS ARRETER LÀ
La modification du *-Info.plist
pour les applications Cordova n'est pas recommandée, car vous devrez enregistrer cette modification qui pourrait être écrasée après le processus de construction. Donc, comme alternative propre, vous devez utiliser cordova-custom-config .
cordova plugin add cordova-custom-config --save
Pourquoi devrais-je l'utiliser?
Certaines préférences de plate-forme peuvent être définies via Cordova/Phonegap dans le fichier config.xml, beaucoup (en particulier ceux liés aux versions les plus récentes de la plate-forme) ne peux pas. Une solution consiste à modifier manuellement les fichiers de configuration dans les plates-formes/répertoire, cependant cela ne peut pas être maintenu sur plusieurs machines de développement ou un environnement CI où Les opérations de construction peuvent écraser vos modifications.
Ce plugin tente de combler cette lacune en autorisant des fichiers .__ supplémentaires. préférences spécifiques à la plate-forme à définir après l'opération de préparation a terminé, autorisant les préférences définies par Cordova à être Remplacé ou d'autres préférences non spécifiées à définir. Depuis le Les préférences personnalisées sont entrées dans le fichier config.xml. Elles peuvent être commis au contrôle de version et donc appliqués à plusieurs machines de développement, environnements CI, et maintenues entre les générations ou même si une plate-forme est supprimée et ré-ajoutée.
Ajoutez maintenant les éléments suivants à votre fichier config.xml
sous le bloc <platform name="ios">
:
<custom-config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist">
<string>This app needs access to your Photo Library to include a screenshot with feedback foo.</string>
</custom-config-file>
<custom-config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist">
<string>Allow to scan member's pass</string>
</custom-config-file>
Cela ajoutera automatiquement ceux-ci dans votre *-Info.plist
.
Si vous utilisez la version <5 du plug-in cordova-custom-config
, remplacez la balise custom-config-file
par config-file
.
https://github.com/dpa99c/cordova-custom-config#changes-in-cordova-custom-config5
Voir cette réponse pour Cordova CLI> = 6:
J'utilise le plugin phonegap org.Apache.cordova.camera et la solution qui fonctionne à 100% est ici:
Tout ce que vous avez à faire est de mettre les valeurs dans le fichier config.xml et de construire avec phonegap.
Mon config.xml:
<plugin name="org.Apache.cordova.camera">
<variable name="CAMERA_USAGE_DESCRIPTION" value="App would like to access the camera." />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="App would like to access the library." />
</plugin>
Vous devrez ajouter les NSPhotoLibraryUsageDescription
et NSCameraUsageDescription
à votre *.plist
dans votre xcode;
NSPhotoLibraryUsageDescription = Confidentialité - Description de l'utilisation de la photothèque NSCameraUsageDescription = Confidentialité - Description de l'utilisation de la caméra
Ensuite, dans la valeur, ajoutez simplement une description de ces paramètres de confidentialité.
J'espère que ça aide
Trouvez la solution: $ cordova plugin list
et réinstallez tous les plugins et lisez leur documentation pour savoir comment les installer concernant la NSPhotoLibraryUsageDescription
etc.
Vous devez ajouter la clé NSPhotoLibraryUsageDescription
dans Info.plist
(dans Xcode) et la valeur doit être la raison pour laquelle l'utilisateur autorise l'utilisation de la caméra (apparaît dans la boîte de dialogue de demande de confirmation de la caméra).