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 ?
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.",
},
},
}
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.
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 ...).
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.
NSLocationAlwaysUsageDescription Votre emplacement est requis pour que les avantages xyz vous soient destinés
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.
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.
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.
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.
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.
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>
Veuillez examiner le courrier électronique que vous avez reçu de ** App Store Connect **.
Instructions
Ouvrez le fichier info.plist.
Ajoutez et recherchez la clé manquante parmi les options fournies (p. Ex. Contacts = Confidentialité - Description de l'utilisation des contacts)
Ajouter une description d'utilisation:
$ (PRODUCT_NAME) nécessite l’accès des contacts à "Fournir la raison ici".
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.
J'ai eu <key>NSLocationWhenInUseUsageDescription </key>
au lieu de <key>NSLocationWhenInUseUsageDescription</key>
assurez-vous de supprimer les espaces finaux
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.
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