92 votes

Application rejetée en raison de descriptions d'utilisation manquantes (Xcode8)

J'ai reçu ce mail aujourd'hui disant que la dernière version de mon application a été rejetée par iTunes Connect en raison de descriptions d'utilisation manquantes. Pour être exact :

Cette application tente d'accéder à des données sensibles en matière de confidentialité sans description de l'utilisation. L'Info.plist de l'application doit contenir une clé NSContactsUsageDescription 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 sensibles en matière de confidentialité sans description de l'utilisation. L'Info.plist de l'application doit contenir une clé NSCalendarsUsageDescription 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 sensibles en matière de confidentialité sans description de l'utilisation. L'Info.plist de l'application doit contenir une clé 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 sensibles en matière de confidentialité sans description de l'utilisation. L'Info.plist de l'application doit contenir une clé NSBluetoothPeripheralUsageDescription 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 sensibles en matière de confidentialité sans description de l'utilisation. L'Info.plist de l'application doit contenir une clé NSMicrophoneUsageDescription 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 sensibles en matière de confidentialité sans description de l'utilisation. L'Info.plist de l'application doit contenir une clé NSMotionUsageDescription avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données.

Une fois que ces problèmes ont été corrigés, vous pouvez alors livrer à nouveau le binaire corrigé.

J'ai compris qu'ils sont devenus obligatoires avec iOS 10, mais le seul problème est que mon application ne demande pas la permission d'accéder à l'un de ces . Je pensais que la description n'était obligatoire que si vous demandiez une autorisation ?

Est-ce parce qu'une de mes dépendances (Cocoapods) pourrait contenir du code pour demander ces permissions ? Ou bien ces descriptions sont-elles obligatoires même si je ne demande jamais à voir le calendrier, les contacts, etc. de l'utilisateur ?

3 votes

D'après mon expérience, ils ne sont nécessaires que si vous demandez des autorisations. Il se peut donc qu'une dépendance fasse cela pour vous. De plus, TOUTES ces permissions sont suspectes, surtout si votre application est une simple liste de choses à faire. Peut-être qu'une dépendance fait du phishing ?

0 votes

Pourriez-vous afficher votre PodFile et la liste des bibliothèques que vous utilisez (si vous utilisez des cocoapodes extérieurs) ?

0 votes

C'était github.com/nickoneill/PermissionScope .. Merci pour votre aide !

142voto

mitul marsonia Points 196

iOS 10 doit ajouter une permission dans info.plist revoyez juste ceci BLOGUE :- paramètres dans l'IOS-10 vous avez tout compris.

Ajouter une permission en info.plist sur la base de votre erreur log.

Note : Écrivez la raison de l'autorisation dans la chaîne de caractères, sinon apple rejettera l'application à nouveau.

NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSContactsUsageDescription

<key>NSContactsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSBluetoothPeripheralUsageDescription

<key>NSBluetoothPeripheralUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMicrophoneUsageDescription

<key>NSMicrophoneUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMotionUsageDescription

<key>NSMotionUsageDescription</key>
    <string>$(PRODUCT_NAME) motion use.</string>

NSLocationAlwaysUsageDescription

<key>NSLocationAlwaysUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationUsageDescription

<key>NSLocationUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationWhenInUseUsageDescription

<key>NSLocationWhenInUseUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSRemindersUsageDescription

<key>NSRemindersUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSiriUsageDescription

<key>NSSiriUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSVideoSubscriberAccountUsageDescription

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSpeechRecognitionUsageDescription

<key>NSSpeechRecognitionUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSCalendarsUsageDescription

<key>NSCalendarsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

enter image description here

0 votes

Ne devrait-on pas dire "${PRODUCT_NAME}" au lieu de "$(PRODUCT_NAME)" ? "{}" au lieu de "()".

0 votes

@backslash-f, Veuillez vérifier le fichier plist existant dans le nouveau projet et il devrait être le suivant $(PRODUCT_NAME) . Vous pouvez voir la propriété par défaut comme Bundle name dans le fichier plist.

1 votes

Veuillez noter qu'une description générique comme celle-ci ne vous permettra plus d'obtenir l'approbation du magasin d'applications. Nous venons de recevoir deux avertissements pour des descriptions similaires. Vous devez décrire l'utilisation réelle pour un être humain.

33voto

Matthew Seaman Points 5137

Les descriptions sont obligatoires pour tout contenu auquel vous ou les cadres contre lesquels vous établissez des liens tentez d'accéder. Les erreurs sont générées lors d'une tentative d'accès au contenu si une description d'utilisation n'a pas été fournie, donc si vous obtenez ces erreurs, votre application doit les demander. Si vous obtenez ces erreurs, c'est que votre application les demande. Vous devez découvrir pourquoi votre application ou ses frameworks les demandent et ajouter les descriptions d'utilisation appropriées dans le fichier info.plist de votre application.

Ou plus idéalement, si vous n'avez pas besoin d'accès, voyez s'il existe un moyen de ne pas le demander (ou d'utiliser des frameworks qui le font inutilement).

11 votes

Je n'arrivais pas à imaginer que je pourrais ajouter une bibliothèque demandant toutes ces autorisations. Mais c'était tellement évident quand je l'ai trouvé : github.com/nickoneill/PermissionScope

1 votes

Oui, un framework comme celui-là n'est pas une bonne idée car il oblige votre application à déclarer beaucoup plus de permissions qu'elle n'en a besoin.

0 votes

@KimAMartinsen C'est quoi ce bordel. Votre question m'a sauvé ainsi que le commentaire juste ici. Est-ce une sorte de bogue avec PermissionScope ? J'en ai vraiment besoin mais il est impossible de l'utiliser si j'obtiens des erreurs comme celle-ci :D

9voto

mgyky Points 2267

Vous pouvez ajouter dans votre info.plist comme :

<key>NSCalendarsUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>Explain the reasons for accessing...</string>

etc.

J'espère que cela aidera quelqu'un...

6voto

Dielson Sales Points 1145

J'ai eu le même problème, et il semble que si un cadre que vous liez contre a un code qui demande cette permission (même si votre application ne les demande jamais), les descriptions d'utilisation sont nécessaires. Mais selon mon test, si vous ne les demandez pas, elles n'apparaîtront pas dans la liste des permissions de votre application.

3voto

TRINADH KOYA Points 898

Calendrier : Key : Privacy - Calendars Usage Description
Valeur : événements du calendrier $(PRODUCT_NAME)

Rappel : Key : Privacy - Reminders Usage Description
Valeur : $(PRODUCT_NAME) rappel utilisation

Contact : Clé : Confidentialité - Utilisation des contacts Description
Valeur : $(PRODUCT_NAME) contact utilisation

Photo : Clé : Confidentialité - Utilisation de la photothèque Description
Valeur : $(PRODUCT_NAME) utilisation de la photo

Partage Bluetooth : Touche : Privacy - Description de l'utilisation du périphérique Bluetooth
Valeur : $(PRODUCT_NAME) Utilisation du périphérique Bluetooth

Microphone : Touche : Privacy - Microphone Usage Description
Valeur : $(PRODUCT_NAME) micro utilisation

Caméra : Key : Privacy - Camera Usage Description
Valeur : $(PRODUCT_NAME) camera use

Emplacement : Key : Privacy - Location Always Usage Description
Valeur : $(PRODUCT_NAME) location use

Key : Privacy - Location When In Use Usage Description
Valeur : $(PRODUCT_NAME) location use

Lande : Key : Privacy - Health Share Usage Description
Valeur : $(PRODUCT_NAME) heath share use

Key : Privacy - Health Update Usage Description
Valeur : $(PRODUCT_NAME) heath update use

HomeKit : Clé : Confidentialité - Utilisation de HomeKit Description
Valeur : $(PRODUCT_NAME) home kit use

Médiathèque : Clé : Confidentialité - Description de l'utilisation de la médiathèque
Valeur : $(PRODUCT_NAME) utilisation de la médiathèque

Mouvement : Clé : Vie privée - Description de l'utilisation des mouvements
Valeur : $(PRODUCT_NAME) motion use

Reconnaissance de la parole : Key : Privacy - Speech Recognition Usage Description
Valeur : $(PRODUCT_NAME) speech use

SiriKit : Touche : Confidentialité - Description de l'utilisation de Siri
Valeur : $(PRODUCT_NAME) siri use

Fournisseur de télévision : Clé : Vie privée - Description de l'utilisation du fournisseur de télévision
Valeur : $(PRODUCT_NAME) tvProvider use

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X