web-dev-qa-db-fra.com

iOS 10 - Modification des autorisations demandées à l'appareil photo, au microphone et à la photothèque, provoquant le blocage de l'application

iOS 10 requiert maintenant la permission de l'utilisateur pour accéder à la médiathèque, aux photos, à l'appareil photo et à d'autres matériels similaires. La solution à cela est d'ajouter leurs clés dans info.plist avec une description pour l'utilisateur indiquant comment nous utilisons leurs données,

Je n'ai trouvé que quelques clés

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

Je veux savoir s’il existe plus de clés également pour d’autres matériels, comme dans iOS 10si vous n’avez pas fourni info.plist avec la description correcte des clés, votre application va planter si construit avec XCode - 8 beta.

93
Syed Ali Salman

Il existe une liste de tous les Cocoa Keys que vous pouvez spécifier dans votre fichier Info.plist:

https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

(Cible Xcode -> Info -> Propriétés de la cible iOS personnalisée)

iOS avait déjà besoin d'autorisations pour accéder au microphone, à l'appareil photo et à la bibliothèque multimédia plus tôt (iOS6, iOS7), mais depuis iOS10, l'application va plante si vous ne fournissez pas la description de la raison pour laquelle vous demandez l'autorisation (elle ne peut pas être vide).

Clés de confidentialité avec description de l'exemple: cheatsheet

Source

Vous pouvez également ouvrir Info.plist en tant que code source: source code

Source

Et ajoutez-les comme ceci:

<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>

Liste de toutes les clés de confidentialité:

NSCameraUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSContactsUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSAppleMusicUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
kTCCServiceMediaLibrary
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription

Mise à jour 2019:

Au cours des derniers mois, deux de mes applications ont été rejetées lors de l'examen car la description de l'utilisation de l'appareil photo ne spécifiait pas ce que je fais avec les photos prises.

Je devais changer la description de ${PRODUCT_NAME} need access to the camera to take a photo à ${PRODUCT_NAME} need access to the camera to update your avatar même si le contexte de l'application était évident (l'utilisateur a appuyé sur l'avatar).

Il semble que Apple accorde maintenant plus d'attention aux descriptions d'utilisation de la confidentialité, et nous devrions expliquer en détail pourquoi nous demandons une autorisation.

126
KlimczakM

Veuillez trouver ci-dessous les codes pour l'exemple d'autorisation de demande ios 10 pour info.plist.
Vous pouvez modifier pour votre message personnalisé.

    <key>NSCameraUsageDescription</key>
    <string>${PRODUCT_NAME} Camera Usage</string>

    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>${PRODUCT_NAME} BluetoothPeripheral</string>

    <key>NSCalendarsUsageDescription</key>
    <string>${PRODUCT_NAME} Calendar Usage</string>

    <key>NSContactsUsageDescription</key>
    <string>${PRODUCT_NAME} Contact fetch</string>

    <key>NSHealthShareUsageDescription</key>
    <string>${PRODUCT_NAME} Health Description</string>

    <key>NSHealthUpdateUsageDescription</key>
    <string>${PRODUCT_NAME} Health Updates</string>

    <key>NSHomeKitUsageDescription</key>
    <string>${PRODUCT_NAME} HomeKit Usage</string>

    <key>NSLocationAlwaysUsageDescription</key>
    <string>${PRODUCT_NAME} Use location always</string>

    <key>NSLocationUsageDescription</key>
    <string>${PRODUCT_NAME} Location Updates</string>

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>${PRODUCT_NAME} WhenInUse Location</string>

    <key>NSAppleMusicUsageDescription</key>
    <string>${PRODUCT_NAME} Music Usage</string>

    <key>NSMicrophoneUsageDescription</key>
    <string>${PRODUCT_NAME} Microphone Usage</string>

    <key>NSMotionUsageDescription</key>
    <string>${PRODUCT_NAME} Motion Usage</string>

    <key>kTCCServiceMediaLibrary</key>
    <string>${PRODUCT_NAME} MediaLibrary Usage</string>

    <key>NSPhotoLibraryUsageDescription</key>
    <string>${PRODUCT_NAME} PhotoLibrary Usage</string>

    <key>NSRemindersUsageDescription</key>
    <string>${PRODUCT_NAME} Reminder Usage</string>

    <key>NSSiriUsageDescription</key>
    <string>${PRODUCT_NAME} Siri Usage</string>

    <key>NSSpeechRecognitionUsageDescription</key>
    <string>${PRODUCT_NAME} Speech Recognition Usage</string>

    <key>NSVideoSubscriberAccountUsageDescription</key>
    <string>${PRODUCT_NAME} Video Subscribe Usage</string>

iOS 11 et plus, si vous souhaitez ajouter une photo/image à votre bibliothèque, vous devez ajouter cette clé

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>${PRODUCT_NAME} library Usage</string>
62
Ilesh

Vous devez ajouter cette autorisation dans Info.plist pour iOS 10.

Photo:

Key       :  Privacy - Photo Library Usage Description    
Value   :  $(PRODUCT_NAME) photo use

Microphone:

Key        :  Privacy - Microphone Usage Description    
Value    :  $(PRODUCT_NAME) microphone use

Caméra:

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use
19
Kirit Modi