web-dev-qa-db-fra.com

Qu'est-ce qui rend NSCalendarsUsageDescription requis?

Lorsque je télécharge sur iTunes Connect, mon application reçoit l'erreur que la confidentialité NSCalendarsUsageDescription n'est pas fournie. Je suis conscient que ces informations sont désormais obligatoires, mais je ne sais pas quoi et où mon application utilise quelque chose qui nécessiterait cette description d'utilisation de la confidentialité.

Que fait/utilise mon application qui nécessite un NSCalendarsUsageDescription?

Dear developer,

We have discovered one or more issues with your recent delivery for "MyApp". To process your delivery, the following issues must be corrected:

This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team

Edit: Pas un doublon à cause du fait que la solution n'a pas fonctionné car j'ai déjà commenté la première réponse ET du fait que le doublon possible ne répond pas réellement à la question ce qui (généralement) rend cette description d'utilisation requise.

23
Martin Polak

Vous pouvez essayer d'utiliser l'outil nm pour rechercher des symboles spécifiques à EventKit dans vos binaires de frameworks, quelque chose comme:

nm YourFramework.framework/YourFramework | grep EK # EK is a prefix for EventKit classes

Ou une ligne (recherchez les fichiers sans extension, ignorez également CodeResources pour réduire la sortie non pertinente):

find YourApp/Frameworks ! -name '*CodeResources*' -type f ! -name "*.*" -exec nm -o -- {} + | grep EK

S'il y en a, vous verrez quelque chose comme:

0000000000003fdb t -[ClusterPrePermissions EKEquivalentEventType:]
                 U _OBJC_CLASS_$_EKEventStore
16
Stanislav Pankevich

Mettez à jour votre fichier Info.plist en ajoutant des autorisations sur votre courrier de rejet ou journal des erreurs.

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>

OR

Résolution du rejet de l'application de données sensibles à la confidentialité

https://developer.Apple.com/library/content/qa/qa1937/_index.html

12
Sachin Nikumbh

Selon la documentation des pommes:

NSCalendarsUsageDescription (String - iOS) Cette clé vous permet de décrire la raison pour laquelle votre application accède aux calendriers de l'utilisateur. Lorsque le système invite l'utilisateur à autoriser l'accès, cette chaîne s'affiche dans le cadre de l'alerte.

il explique ensuite comment le mettre en œuvre:

Important: pour protéger la confidentialité des utilisateurs, une application iOS liée sur ou après iOS 10.0, et qui accède aux calendriers de l'utilisateur, doit déclarer statiquement l'intention de le faire. Incluez la clé NSCalendarsUsageDescription dans le fichier Info.plist de votre application et fournissez une chaîne d'objet pour cette clé. Si votre application tente d'accéder aux calendriers de l'utilisateur sans chaîne d'objectif correspondante, votre application se ferme.

Fondamentalement, insérez simplement ceci en vous info.plist fichier

 <key>NSCalendarsUsageDescription</key>
<string>purpose for using calendar</string>

vous pouvez en savoir plus sur les clés de cacao ici

9
Dustin Spengler

La mise à jour vers une nouvelle version du SDK AdMob a résolu mon problème.

4
thatzprem

Pour tous ceux qui se demandent pourquoi tout à coup votre application a maintenant tous ces paramètres d'autorisation en premier lieu, cela pourrait être à cause de CocoaPods ou de Carthage - ils ont mis en place toutes ces autorisations. Je viens de mettre à jour mon application pour utiliser cordova-plugin-firebasex qui a une installation étendue de Cocoapods (et 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 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 autorisations key/string manquant dans le fichier Info.plist. J'ai ensuite dû fouiller dans mon projet pour trouver la cause de cela, car mon application n'a pas besoin 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 creuser pour savoir comment faire sans recommencer mon projet.

0
rolinger