iOS 10 - Änderungen bei der Abfrage von Berechtigungen für Kamera, Mikrofon und Fotobibliothek führen zum Absturz der Anwendung

103

iOS 10 erfordert jetzt die Benutzerberechtigung für den Zugriff auf Medienbibliothek, Fotos, Kamera und andere Hardware wie diese. Die Lösung hierfür besteht darin, ihre Schlüssel info.plistmit einer Beschreibung für den Benutzer hinzuzufügen , wie wir ihre Daten verwenden.

Ich konnte nur ein paar Schlüssel finden

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

Ich möchte wissen, ob es auch für andere Hardware mehr Schlüssel gibt, als iOS 10 wenn Sie nicht die info.plistrichtige Schlüsselbeschreibung angegeben haben. Ihre Anwendung stürzt ab, wenn sie mit XCode - 8 Beta erstellt wird.

Syed Ali Salman
quelle
Ist iOS 10 nicht unter NDA?
sage444
Da bin ich mir nicht sicher.
Syed Ali Salman

Antworten:

138

[AKTUALISIERTE Liste der Datenschutzschlüssel für iOS 13 - siehe unten]

Es gibt eine Liste aller Cocoa KeysElemente, die Sie in Ihrer Info.plistDatei angeben können :

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

(Xcode: Ziel -> Info -> Benutzerdefinierte iOS-Zieleigenschaften)

iOS benötigte bereits früher Berechtigungen für den Zugriff auf Mikrofon, Kamera und Medienbibliothek (iOS 6, iOS 7). Da die iOS 10-App jedoch abstürzt, wenn Sie nicht die Beschreibung angeben, warum Sie nach der Berechtigung fragen (kann dies nicht sein) leer).

Datenschutzschlüssel mit Beispielbeschreibung: Cheatsheet

Quelle

Alternativ können Sie Info.plistals Quellcode öffnen : Quellcode

Quelle

Und fügen Sie Datenschutzschlüssel wie folgt hinzu:

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

Liste aller Datenschutzschlüssel: [AKTUALISIERT auf iOS 13]

NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription

Update 2019:

In den letzten Monaten wurden zwei meiner Apps während der Überprüfung abgelehnt, da in der Beschreibung der Kameranutzung nicht angegeben war, was ich mit aufgenommenen Fotos mache.

Ich musste die Beschreibung von auf ändern ${PRODUCT_NAME} need access to the camera to take a photo, ${PRODUCT_NAME} need access to the camera to update your avatarobwohl der App-Kontext offensichtlich war (Benutzer tippte auf den Avatar).

Es scheint, dass Apple den Beschreibungen der Datenschutznutzung jetzt noch mehr Aufmerksamkeit schenkt, und wir sollten ausführlich erklären, warum wir um Erlaubnis bitten.

KlimczakM
quelle
2
Ja, aber die Änderung ist, dass die Anwendung jetzt abstürzt, wenn Sie keine Beschreibung angegeben haben, warum wir um Erlaubnis bitten. Bitte korrigieren Sie mich, wenn ich falsch liege.
Syed Ali Salman
1
@Syed Ali Salman Sie haben Recht - es wird seit iOS10 abstürzen, jetzt bekommen Sie wirklich Ihre Frage. Aktualisiert die Antwort. :)
KlimczakM
1
Ich hoffe, Apple wird entscheiden, ob es obligatorisch ist oder nicht. Laut Apple-Dokumentation ist es nicht:Explain why your app needs the information if it’s not obvious. You can add custom text to the system-provided permission request alert. Make the text specific and polite, so people don’t feel pressured. Keep the text short, and use sentence case. There’s no need to include your app name. The system already identifies your app as the one making the request.
sumofighter666
Ich habe zuvor kommentiert, dass diese Werte leer bleiben können, um nur die vom System generierte Meldung anzuzeigen. Obwohl dies funktionell einwandfrei funktioniert, scheint Apple Ihre Binärdatei automatisch abzulehnen, wenn Sie diese Schlüssel einschließen, aber keinen Wert für sie festlegen .
Stonz2
13
Es scheint mir, dass es ein totaler Unsinn von Apple ist, eine App einfach abstürzen zu lassen, wenn eine Berechtigungsbeschreibung fehlt ... Was für eine schlechte Benutzererfahrung! (Anonym) beschwert sich schnell fließen im AppStore-Test ... Und natürlich verhält sich der Simultor anders ...
Gabriel
64

Nachfolgend finden Sie Codes für ios 10-Anforderungsgenehmigungsbeispiel für info.plist.
Sie können für Ihre benutzerdefinierte Nachricht ändern.

    <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 und höher: Wenn Sie Ihrer Bibliothek ein Foto / Bild hinzufügen möchten, müssen Sie diesen Schlüssel hinzufügen

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>${PRODUCT_NAME} library Usage</string>
Ilesh P.
quelle
Vielen Dank, die wahre Antwort, nur Apple sagt: "Es ist nicht erforderlich, Ihren App-Namen anzugeben. Das System identifiziert Ihre App bereits als diejenige, die die Anfrage stellt."
Yucel Bayram
2
Das ist die Antwort, nach der ich gesucht habe
Dinesh Phalwadiya
19

Sie müssen diese Berechtigung in Info.plist für iOS 10 hinzufügen.

Foto:

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

Mikrofon:

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

Kamera:

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use
Kirit Modi
quelle
Richtige Tasten sind wie NSPhotoLibraryUsageDescription.
BangOperator