web-dev-qa-db-fra.com

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

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

Cette application tente d'accéder aux données confidentielles sans description d'utilisation. 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 aux données confidentielles sans description d'utilisation. 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 aux données confidentielles sans description d'utilisation. 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 aux données confidentielles sans description d'utilisation. 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 aux données confidentielles sans description d'utilisation. 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 aux données confidentielles sans description d'utilisation. 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 ces problèmes corrigés, vous pouvez ensuite renvoyer le fichier binaire corrigé.

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

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

88
KimHafr

Les descriptions sont obligatoires pour tout contenu que vous ou tout framework vous associez à une tentative d'accès. 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. Si vous obtenez ces erreurs, votre application doit les demander. Vous devriez découvrir pourquoi votre application ou ses infrastructures en ont besoin et ajouter des descriptions d'utilisation appropriées à la liste info.plist de votre application.

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

33
Matthew Seaman

iOS 10 doit ajouter une permission dans info.plist il suffit de passer en revue cette BLOG: - settings-in-ios-1 vous avez toute idée.

Ajoutez l'autorisation dans le fichier info.plist sur votre journal d'erreur .

Remarque: Écrivez la raison appropriée pour l'autorisation dans la valeur de chaîne, sinon Apple rejette à nouveau l'application.

NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
    <string>$(PRODUCT_NAME) camera use.</string>

NSContactsUsageDescription

<key>NSContactsUsageDescription</key>
    <string>$(PRODUCT_NAME) contacts use.</string>

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>$(PRODUCT_NAME) photos and video use.</string>

NSBluetoothPeripheralUsageDescription

<key>NSBluetoothPeripheralUsageDescription</key>
    <string>$(PRODUCT_NAME) bluetooth use.</string>

NSMicrophoneUsageDescription

<key>NSMicrophoneUsageDescription</key>
    <string>$(PRODUCT_NAME) microphone use.</string>

NSMotionUsageDescription

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

NSLocationAlwaysUsageDescription

<key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) location use.</string>

NSLocationUsageDescription

<key>NSLocationUsageDescription</key>
    <string>$(PRODUCT_NAME) location use.</string>

NSLocationWhenInUseUsageDescription

<key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) location use.</string>

NSRemindersUsageDescription

<key>NSRemindersUsageDescription</key>
    <string>$(PRODUCT_NAME) reminders use.</string>

NSSiriUsageDescription

<key>NSSiriUsageDescription</key>
    <string>$(PRODUCT_NAME) siri use.</string>

NSVideoSubscriberAccountUsageDescription

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string>$(PRODUCT_NAME) video use.</string>

NSSpeechRecognitionUsageDescription

<key>NSSpeechRecognitionUsageDescription</key>
    <string>$(PRODUCT_NAME) speech recognition use.</string>

NSCalendarsUsageDescription

<key>NSCalendarsUsageDescription</key>
    <string>$(PRODUCT_NAME) user your calendar.</string>

enter image description here

138
Mitul Marsoniya

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.

L'espoir aidera quelqu'un ...

9
mgyky

J'ai eu le même problème, et il semble que si tout framework 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 autorisations de votre application.

6
Dielson Sales

Calendar: Légende: Confidentialité - Calendriers Description de l'utilisation
Valeur: $ (PRODUCT_NAME) événements du calendrier

Rappel: Légende: Confidentialité - Description de l'utilisation des rappels
Valeur: $ (PRODUCT_NAME) rappel utilisé

Contact: Clé: Privacy - Description de l'utilisation des contacts
Valeur: $ (PRODUCT_NAME) utilisation du contact

Photo: Légende: Confidentialité - Description de l'utilisation de la photothèque
Valeur: $ (PRODUCT_NAME) utilisation de la photo

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

Microphone: Légende: Confidentialité - Description de l'utilisation du microphone
Valeur: $ (PRODUCT_NAME) utilisation du microphone

Camera: Légende: Confidentialité - Description de l'utilisation de la caméra
Valeur: $ (PRODUCT_NAME) utilisation de l'appareil photo

Emplacement: Légende: Confidentialité - Emplacement Toujours Description de l'utilisation
Valeur: $ (PRODUCT_NAME) utilisation de l'emplacement

Clé: Confidentialité - Emplacement en cours d'utilisation Description de l'utilisation
Valeur: $ (PRODUCT_NAME) utilisation de l'emplacement

Heath: Légende: Confidentialité - Description de l'utilisation du partage d'intégrité
Valeur: $ (PRODUCT_NAME) utilisation du partage de santé

Clé: Confidentialité - Description d'utilisation de la mise à jour de la santé
Valeur: $ (PRODUCT_NAME) utilisation de la mise à jour de santé

HomeKit: Légende: Confidentialité - Description de l'utilisation de HomeKit
Valeur: $ (PRODUCT_NAME) utilisation du kit pour la maison

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

Motion: Légende: Confidentialité - Description de l'utilisation de Motion
Valeur: $ (PRODUCT_NAME) utilisation du mouvement

Speech Recognition: Key: Privacy - Description de l'utilisation de la reconnaissance vocale
Valeur: $ (PRODUCT_NAME) utilisation de la parole

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

Fournisseur TV: Légende: Confidentialité - Description de l'utilisation du fournisseur TV
Valeur: $ (PRODUCT_NAME) Utilisation de tvProvider

3
Trinadh Koya

Pour ceux qui se demandent pourquoi, tout à coup, votre application dispose maintenant de tous ces paramètres d'autorisation, en premier lieu à cause de CocoaPods ou de Carthage. Je viens de mettre à niveau mon application pour utiliser cordova-plugin-firebasex, qui dispose d'une installation complète de Cocoapods (et de leurs dépendances). Vous pouvez désactiver ces autorisations AVANT d'installer des cocoapods dans votre projet en plaçant un fichier PermissionsConfiguration.xcconfig à la racine de votre projet. Vous pouvez en savoir plus à ce sujet ici: https://cocoapods.org/pods/Permission# installation

Tout cela m'a surpris lorsque la nouvelle version de mon application a été rejetée avec 7 clés/chaîne de permission manquantes dans le fichier Info.plist. J'ai ensuite dû creuser dans mon projet pour trouver la cause, car mon application ne nécessite ni n'utilise aucune de ces autorisations (jamais auparavant).

Cela existe peut-être, mais pour le moment, je ne trouve pas le moyen de supprimer les autorisations après l'intégration des pods ... je vais devoir chercher comment le faire sans recommencer mon projet.

0
rolinger