web-dev-qa-db-fra.com

Erreur lors de la connexion à l'Appstore: chaîne manquante dans le fichier Info.plist

J'ai soumis mon application pour examen à l'Appstore Connect. Bien que l'application soit toujours en cours de révision, j'ai reçu un email pour m'informer que je dois corriger une erreur. Voici le contenu du message: 

    Dear Developer,

    We identified one or more issues with a recent delivery for your 
    app XXXXX. Your delivery was successful, but you 
    may wish to correct the following issues in your next delivery:

    "Missing Purpose String in Info.plist File. Your app's code 
    references one or more APIs that access sensitive user data. The 
    app's Info.plist file should contain a 
    NSLocationAlwaysUsageDescription key with a user-facing purpose 
    string explaining clearly and completely why your app needs the 
    data. Starting spring 2019, all apps submitted to the App Store 
    that access user data will be required to include a purpose 
    string.If you're using external libraries or SDKs, they may 
    reference APIs that require a purpose string. While your app might 
    not use these APIs, a purpose string is still required. You can 
    contact the developer of the library or SDK and request they 
    release a version of their code that doesn't contain the APIs. 


     After you’ve corrected the issues, you can use Xcode or 
     Application Loader to upload a new binary to iTunes Connect.

     Best regards,

     The App Store Team

Mon application est entièrement construite avec expo et je ne sais pas comment accéder à Info.plist et la modifier. 

Une idée ?

70
John doe

Si vous utilisez Expo, vous pouvez ajouter résoudre en ajoutant infoPlist à app.json comme suit:

  "expo": {
     "ios": {
       "bundleIdentifier": "com.app.myapp",
       "infoPlist": {
         "NSLocationAlwaysUsageDescription": "Some message to appease Apple.",
       },
     },
   }

Expo Docs

16
gwalshington

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 qu'il s'agit d'un nouveau critère permettant d'accepter les mises en ligne téléchargées 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é d’emplacement, mais j’ai ajouté ces lignes afin de respecter les consignes de connexion de l’Appstore. Btw après avoir reçu cet email, je pouvais tester l'application même quand ils disaient que la générer posait quelques problèmes.

J'espère que cela fonctionnera pour vous les gars. 

24
vroldan

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. Cela peut être lié à certains frameworks inclus dans le projet qui ont cette fonctionnalité optionnelle. 

Je peux confirmer que mon application a été approuvée même sans les clés NSLocationAlwaysUsageDescription et NSLocationWhenInUseUsageDescription dans info.plist

En effet, comme l’a déclaré Apple dans le courrier:

À partir du printemps 2019, toutes les applications soumises à l'App Store les données d’utilisateur d’accès devront inclure un objectif chaîne.

La seule chose à faire est donc 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 votre info.plist, avec NSLocationAlwaysUsageDescription et NSLocationWhenInUseUsageDescription comme clés et décrivez brièvement pourquoi vous les utilisez comme valeur (même si vous ne les utilisez pas vraiment ...). 

10
AnthoPak

Nous avons reçu le même courrier électronique et nous n'utilisons pas du tout CoreLocation. Après une recherche rapide, nous avons constaté que Parse SDK pouvait utiliser CoreLocation. Dans le courrier électronique d'Apple, ils disent clairement: 

If you're using external libraries or SDKs, they may reference APIs that require a purpose string.

Cela signifie que, à la minute près 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 la confidentialité pour When In Use et Alway Use.

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.

6
sebleclerc

NSLocationAlwaysUsageDescription Votre emplacement est requis pour que les avantages xyz vous soient destinés

6
Sumit Sharma

C'est une nouvelle exigence d'Apple, même si vous n'utilisez pas d'emplacement. Si vous souhaitez ajouter des autorisations dans Xcode, recherchez "Confidentialité - Description de l'utilisation de l'emplacement" et "Confidentialité - Localisation lorsque vous utilisez la description de l'utilisation" et tapez une chaîne personnalisée pour chacune d'entre elles.

 enter image description here

5
Juan José Ramírez

Ce problème se produit parce que vous n'avez pas inclus 

 <NSLocationAlwaysUsageDescription>

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.

4
Sachin Nautiyal

alors maintenant nous avons 4 cas ..

NSLocationAlwaysAndWhenInUseUsageDescription (iOS>11)
NSLocationWhenInUseUsageDescription          (iOS>11)
NSLocationAlwaysUsageDescription             (iOS<=10)
NSLocationUsageDescription                   (seems very old, iOS8?)

Apple déclare à: 

"Add the NSLocationWhenInUseUsageDescription key and the NSLocationAlwaysAndWhenInUseUsageDescription key to your Info.plist file."

Et:

"If your app supports iOS 10 and earlier, add the NSLocationAlwaysUsage"

NSLocationUsageDescription semble mort, la seule référence du site ADC est: " https://developer.Apple.com/ibeacon/Getting-Started-with-iBeacon.pdf "

Donc, pour être sûr, utilisez d'abord 3.

3
ingconti

Ces réponses vous indiquent toutes comment vous conformer aux règles de l'App Store pour éviter cet avertissement, mais la vraie solution consiste pour Expo à vous permettre de désactiver l'exigence de leur SDK pour les services de localisation, à moins que vous ne les utilisiez réellement. possible.

2
Calvin

Pour plus de simplification, vous pouvez ajouter ces lignes dans votre info.plist. Ces erreurs se produisent car À compter du printemps 2019, toutes les applications soumises à l'App Store qui accèdent aux données utilisateur devront inclure une chaîne de caractères.

  1. Ouvrez info.plist en tant que code source.
  2. Ajoutez ces lignes suivantes dans votre plist

    <key> NSLocationAlwaysAndWhenInUseUsageDescription </key>
    <string> $(PRODUCT_NAME) needs Location access for "some reason"! </string>
    <key> NSLocationWhenInUseUsageDescription </key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"! </string>
    <key> NSLocationAlwaysUsageDescription </key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"! </string>
    
1
Sachin Nautiyal

Veuillez examiner le courrier électronique que vous avez reçu de ** App Store Connect **.

Identifier la clé manquante enter image description here

Instructions

  1. Ouvrez le fichier info.plist.

  2. Ajoutez et recherchez la clé manquante parmi les options fournies (p. Ex. Contacts = Confidentialité - Description de l'utilisation des contacts)

  3. Ajouter une description d'utilisation:

$ (PRODUCT_NAME) nécessite l’accès des contacts à "Fournir la raison ici".

Exemple:

1
Zeus

Je suis également confronté au même problème, mais après 27 heures, j’ai reçu le message d’approbation même si je n’ai rien fait. Alors attendez environ 24 heures au lieu de refaire tout ce processus.

0
Abdul Qayum

J'ai eu <key>NSLocationWhenInUseUsageDescription </key> au lieu de <key>NSLocationWhenInUseUsageDescription</key>

assurez-vous de supprimer les espaces finaux

0

même problème le 19 février, j'ai reçu un email avec un tas d'autorisations que je n'utilise pas, je suppose qu'elles proviennent de plugins. Apple indique que le 19 mars, il s’agit d’une exigence; j’ajoute donc ces informations dans info.plst et les télécharge à nouveau. 

C'est vraiment idiot. 

0
Rick Chen

Mon application a également that et je ne fais rien à ce sujet, mais elle peut bien fonctionner. La prochaine fois, je pense que je devrais ajouter une telle clé dans le plist, il suffit de faire une description

0
liunianhuaguoyanxi