J'ai soumis mon application pour examen à l'App Store Connect. Bien que l'application soit toujours en cours d'examen, j'ai reçu un e-mail m'informant que je dois corriger une erreur. Voici le contenu du message:
Cher développeur,
Nous avons identifié un ou plusieurs problèmes avec une livraison récente pour votre application XXXXX. Votre livraison a réussi, mais vous souhaiterez peut-être corriger les problèmes suivants lors de votre prochaine livraison:
"Chaîne d'objectif manquante dans le fichier Info.plist. Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin à partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, elles peuvent référencer des API qui nécessitent une chaîne d'objectif. Pendant que votre application peut ne pas utiliser ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API.
Après avoir corrigé les problèmes, vous pouvez utiliser Xcode ou Application Loader pour télécharger un nouveau fichier binaire sur iTunes Connect.
Meilleures salutations,
L'équipe App Store
Mon application est entièrement construite avec Expo et je ne sais pas comment accéder et modifier le fichier Info.plist.
Une idée?
la source
Réponses:
Si vous utilisez Expo, vous pouvez ajouter une résolution en ajoutant infoPlist à app.json comme ceci:
Documents de l'Expo
la source
EDIT Avril 2019 : Vous devez maintenant ajouter ces deux clés, car le printemps 2019 a commencé. Notez qu'il
NSLocationAlwaysUsageDescription
est désormais obsolète (depuis iOS 11) et a été remplacé parNSLocationAlwaysAndWhenInUseUsageDescription
etNSLocationWhenInUseUsageDescription
. Si vous souhaitez prendre en charge une version inférieure à iOS 11, vous devrez utiliser les trois valeurs.Pour résumer, vous devez:
NSLocationAlwaysAndWhenInUseUsageDescription
ANDNSLocationWhenInUseUsageDescription
pour iOS 11 et plusNSLocationAlwaysUsageDescription
si vous souhaitez prendre en charge iOS 10 et moinsNSLocationUsageDescription
si vous souhaitez prendre en charge iOS 8 et moins.Vous pouvez soumettre votre application même si vous avez reçu ce message!Je viens de faire face au même problème hier, même si l'application n'utilise pas la fonctionnalité de localisation. Il peut être lié à un cadre inclus dans le projet qui possède cette fonctionnalité facultative.
Je peux confirmer que mon application a été approuvée même sans la touche
NSLocationAlwaysUsageDescription
etNSLocationWhenInUseUsageDescription
info.plist
En effet, comme Apple l'a déclaré dans le mail:
Donc, la seule chose à faire est d'ajouter cette clé (pour le moment c'est mieux, pour ne pas l'oublier) dans votre projet afin qu'elle soit incluse dans votre prochaine mise à jour .
Ajoutez simplement deux nouvelles entrées dans your
info.plist
, withNSLocationAlwaysUsageDescription
etNSLocationWhenInUseUsageDescription
as et une brève description de la raison pour laquelle vous les utilisez comme valeur (même si vous ne les utilisez pas vraiment ...).la source
NSLocationAlwaysUsageDescription
devrait être remplacé parNSLocationAlwaysAndWhenInUseUsageDescription
etNSLocationWhenInUseUsageDescription
, et non parNSLocationUsageDescription
(comme je l'ai écrit précédemment, désolé…). J'ai mis à jour ma réponse pour ajouter un résumé du processus.J'ai quelques applications dans le magasin et j'ai essayé de distribuer une version pour le contrôle qualité et la même chose s'est produite dans deux applications différentes. Je pense que c'est un nouveau critère pour accepter les téléchargements de builds sur Appstore connect.
La solution est simple, ajoutez les lignes suivantes dans le fichier .plist.
<key>NSLocationAlwaysUsageDescription</key>
<string>custom message</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>custom message</string>
PS: Dans mon cas, je n'ai utilisé aucune fonctionnalité de localisation, mais j'ai ajouté ces lignes afin de se conformer aux directives de connexion Appstore. Btw après avoir reçu cet e-mail, je pourrais tester l'application même quand ils ont dit que la version avait des problèmes.
J'espère que ce travail pour vous les gars.
la source
<key>NSLocationUsageDescription</key>
C'est une nouvelle exigence d'Apple, même si vous n'utilisez pas de localisation. Si vous souhaitez ajouter les autorisations dans Xcode, recherchez «Confidentialité - Description de l'utilisation de l'emplacement» et «Confidentialité - Description de l'utilisation de l'emplacement lors de l'utilisation» et tapez une chaîne personnalisée pour chacun d'eux.
la source
Pour plus de simplification, vous pouvez ajouter ces lignes dans votre info.plist. Ces erreurs surviennent car à partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif.
Ajoutez ces lignes suivantes dans votre plist
la source
NSLocationAlwaysUsageDescription Votre emplacement est requis pour les avantages xyz pour vous NSLocationWhenInUseUsageDescription Votre emplacement est requis pour les avantages xyz pour vous
la source
Nous avons reçu le même e-mail et nous n'utilisons pas du tout CoreLocation. Après une recherche rapide, nous avons constaté que Parse SDK pouvait utiliser CoreLocation. Dans l'e-mail d'Apple, ils disent clairement:
Cela signifie qu'à la minute où votre code ou toute autre bibliothèque ou SDK peut utiliser CoreLocation, même si vous ne l'utilisez pas, vous devez fournir une description de confidentialité pour «Lors de l'utilisation» et «Toujours utiliser».
C'est aussi quelque chose de nouveau d'Apple et pour l'instant ce n'est qu'un avertissement, mais il sera nécessaire à partir du printemps 2019 pour les nouvelles soumissions.
la source
CLLocationManager.requestWhenInUseAuthorization()
est appelé. Apple a analysé chaque code d'application pour voir si une telle fonction pouvait être appelée. S'il n'est jamais appelé, l'alerte n'apparaîtra pas.Ce problème se produit car vous n'avez pas inclus
pour votre application. J'ai rencontré le même problème lorsque j'ai essayé de soumettre mon application sur l'AppStore. Une fois l'application traitée, j'ai reçu le même courrier. Je viens d'ajouter la description et maintenant c'est résolu.
J'espère que cela t'aides.
la source
<key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
Il existe les cas suivants:
Apple déclare à:
et:
NSLocationUsageDescription
semble mort, la seule référence sur le site ADC est: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdfDonc, pour être sûr, utilisez les 3 premiers.
la source
Ces réponses vous indiquent toutes comment vous conformer aux règles de l'App Store pour éviter l'avertissement, mais le vrai correctif serait que l'Expo vous permette de désactiver l'exigence de SDK pour les services de localisation à moins que vous ne les utilisiez réellement - je ne sais pas si c'est possible.
la source
même problème le 19 février, j'ai reçu un e-mail avec un tas d'autorisations que je n'utilise pas, je suppose qu'ils proviennent de plugins. Apple dit en mars 19 que c'est une exigence, je les ajoute donc dans info.plst et je les télécharge à nouveau.
C'est vraiment ridicule.
la source
Je suis également confronté au même problème, mais après 27 heures, j'ai reçu l'e-mail sur approuvé même si je n'ai rien fait. Attendez donc environ 24 heures au lieu de refaire tout ce processus.
la source
J'avais
<key>NSLocationWhenInUseUsageDescription </key>
au lieu de<key>NSLocationWhenInUseUsageDescription</key>
veillez à supprimer les espaces blancs de fin
la source
Veuillez consulter l'e-mail que vous avez reçu de ** App Store Connect **
Identifiez la clé manquante
Instructions
Ouvrez le fichier info.plist.
Ajoutez et recherchez la clé manquante parmi les options fournies (par exemple, Contacts = Confidentialité - Description de l'utilisation des contacts)
Ajouter une description d'utilisation:
Exemple:
la source
Avec Xcode 11 copiez la clé
NSLocationAlwaysUsageDescription
et ajoutez-la àInfo
->Custom iOS Target Properties
-> Cliquez+
en bas à gauche de cet onglet et insérez comme valeur une sorte de description commeThis app requires location access to function properly.
.la source
"Chaîne d'objectif manquante dans le fichier Info.plist. Le code de votre application fait référence à une ou plusieurs API qui accèdent aux données utilisateur sensibles. Le fichier Info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une chaîne d'objectif destinée à l'utilisateur expliquant clairement et complètement pourquoi votre application a besoin à partir du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne d'objectif. Si vous utilisez des bibliothèques externes ou des SDK, elles peuvent référencer des API qui nécessitent une chaîne d'objectif. Pendant que votre application peut ne pas utiliser ces API, une chaîne d'objectif est toujours requise. Vous pouvez contacter le développeur de la bibliothèque ou du SDK et lui demander de publier une version de son code qui ne contient pas les API.
Ouvrez info.plist comme code source.
Ajoutez ces lignes suivantes dans votre plist
la source
Mon application l'a également , et je ne fais rien à ce sujet, mais elle peut bien fonctionner, la prochaine fois que je pense que je devrais ajouter une telle clé dans plist, faites simplement une description
la source
Une réponse courte au problème ci-dessus -
NSLocationAlwaysUsageDescription
doit être mis à jour avec la description suivante dans le fichier Info.plistla source
Dans notre cas, nous utilisions
NSLocationWhenInUseUsageDescription
dans notre application, mais pasNSLocationAlwaysUsageDescription
.En lisant les commentaires ici (merci matt-oakes), il ressemble à
NSLocationAlwaysUsageDescription
soit utilisé par l'un des frameworks de dépendances que nous utilisons.En exécutant notre application, il n'affiche pas le modal d'autorisation NSLocationAlwaysUsageDescription réel, il semble donc simplement gérer cela en arrière-plan.
Donc, en résumé, l'ajout
NSLocationAlwaysUsageDescription
à Info.plist a corrigé l'e-mail d'avertissement et n'a changé aucun comportement dans l'application 👍🏻la source