J'ai donc reçu ce courrier aujourd'hui 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 sensibles à la confidentialité sans description d'utilisation. Le fichier 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 sensibles à la confidentialité sans description d'utilisation. Le fichier 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 sensibles à la confidentialité sans description d'utilisation. Le fichier 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 sensibles à la confidentialité sans description d'utilisation. Le fichier 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 sensibles à la confidentialité sans description d'utilisation. Le fichier 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 sensibles à la confidentialité sans description d'utilisation. Le fichier 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 renvoyer le binaire corrigé.
J'ai compris que ceux-ci sont devenus obligatoires avec iOS 10, mais le seul problème est que mon application ne demande pas l'autorisation d'accéder à l'un de ceux-ci. Je pensais que la description n'était obligatoire que si vous avez réellement demandé une autorisation?
Est-ce parce que l'une de mes dépendances (Cocoapods) peut contenir du code pour demander ces autorisations? Ou ces descriptions sont-elles obligatoires même si je ne demande jamais à voir le calendrier des utilisateurs, les contacts, etc.?
la source
PodFile
et la liste des bibliothèques que vous utilisez (si vous utilisez des cocoapodes extérieurs)?Réponses:
Les descriptions sont obligatoires pour tout contenu que vous ou tout cadre auquel vous vous connectez contre une tentative d'accès. Les erreurs sont générées lors d'une tentative d'accès au contenu si aucune description d'utilisation n'a été fournie, donc si vous obtenez ces erreurs, votre application doit les demander. Vous devriez découvrir pourquoi votre application ou ses frameworks en ont besoin et ajouter des descriptions d'utilisation appropriées à 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).
la source
iOS 10 doit ajouter une autorisation dans info.plist, il suffit de consulter ce BLOG: - settings-in-ios-10 vous avez toute idée.
Ajoutez l'autorisation dans le fichier info.plist basé sur votre journal d' erreurs .
NSCameraUsageDescription
NSContactsUsageDescription
NSPhotoLibraryUsageDescription
NSBluetoothPeripheralUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSVideoSubscriberAccountUsageDescription
NSSpeechRecognitionUsageDescription
NSCalendarsUsageDescription
la source
$(PRODUCT_NAME)
. Vous pouvez voir la propriété par défaut commeBundle name
dans le fichier plist.Vous pouvez ajouter votre info.plist comme:
etc.
L'espoir aidera quelqu'un ...
la source
J'ai eu le même problème, et il semble que si un cadre auquel vous vous connectez a un code qui demande cette autorisation (même si votre application ne le demande jamais), les descriptions d'utilisation sont nécessaires. Mais selon mon test, si vous ne les demandez pas, ils n'apparaîtront pas dans la liste des autorisations de votre application.
la source
Calendrier: Clé: Confidentialité - Calendriers Description de l'utilisation
Valeur: Événements de calendrier $ (PRODUCT_NAME)
Rappel: Clé: Confidentialité - Rappels Description de l'utilisation
Valeur: Utilisation du rappel $ (PRODUCT_NAME)
Contact : Clé: Confidentialité - Contacts Description de l'utilisation
Valeur: $ (PRODUCT_NAME)
Photo: Clé: Confidentialité - Description de l'utilisation de la photothèque
Valeur: Utilisation de la photo (PRODUCT_NAME) $
Partage Bluetooth: Clé: Confidentialité - Utilisation du périphérique Bluetooth Description
Valeur: $ (PRODUCT_NAME) Utilisation du périphérique Bluetooth
Microphone: Clé: Confidentialité - Utilisation du microphone Description
Valeur: $ (PRODUCT_NAME) utilisation du microphone
Caméra: Clé: Confidentialité - Description de l'utilisation de la caméra
Valeur: Utilisation de la caméra (PRODUCT_NAME) $
Emplacement: Clé: Confidentialité - Emplacement toujours Description de l'utilisation
Valeur: $ (PRODUCT_NAME) location use
Clé: Confidentialité - Emplacement lors de l'utilisation Description de l'utilisation
Valeur: $ (PRODUCT_NAME) location use
Heath: Key: Privacy - Health Share Usage Description
Valeur: $ (PRODUCT_NAME) heath share use
Clé: Confidentialité - Utilisation des mises à jour de santé Description
Valeur: Utilisation des mises à jour de santé $ (PRODUCT_NAME)
HomeKit: Clé: Confidentialité - Description de l'utilisation de HomeKit
Valeur: Utilisation du kit pour la maison $ (PRODUCT_NAME)
Médiathèque: Clé: Confidentialité - Utilisation de la médiathèque Description
Valeur: $ (PRODUCT_NAME) utilisation de la médiathèque
Motion: Key: Confidentialité - Motion Description de l'utilisation
Valeur: $ (PRODUCT_NAME) motion use
Reconnaissance vocale: Clé: Confidentialité - Utilisation de la reconnaissance vocale Description
Valeur: utilisation vocale $ (PRODUCT_NAME)
SiriKit: Clé: Confidentialité - Description de l'utilisation de Siri
Valeur: $ (PRODUCT_NAME) siri use
Fournisseur TV: Clé: Confidentialité - Description de l'utilisation du fournisseur TV
Valeur: $ (PRODUCT_NAME) Utilisation de tvProvider
la source
Pour tous ceux qui se demandent pourquoi tout à coup votre application a maintenant tous ces paramètres d'autorisation, cela pourrait être à cause de CocoaPods ou de Carthage - ils ont mis en place toutes ces autorisations. Je viens de mettre à niveau mon application pour utiliser cordova-plugin-firebasex qui a une installation étendue de Cocoapods (et de dépendances). Vous pouvez désactiver ces autorisations AVANT d'installer des cocoapods dans votre projet en mettant un 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înes d'autorisations manquantes dans le fichier Info.plist. J'ai ensuite dû creuser dans mon projet pour trouver ce qui en était la cause, car mon application n'a besoin d'aucune de ces autorisations ou n'utilise aucune de ces autorisations (jamais).
Cela peut exister, mais pour le moment, je ne trouve pas de moyen de supprimer les autorisations après l'intégration des pods ... je vais devoir fouiller pour savoir comment faire cela sans recommencer mon projet.
la source