NSCameraUsageDescription in iOS 10.0 Laufzeitabsturz?

154

Mit der iOS 10.0letzten Beta. Ich hatte versucht, mit der Kamera Barcode in meiner App zu scannen, und dieser stürzte mit diesem Laufzeitfehler ab.

Diese App ist abgestürzt, weil versucht wurde, auf datenschutzrelevante Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSCameraUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.

Stecken Sie diesen Schlüssel in die Liste, aber er ist immer noch abgestürzt?

user3069232
quelle
6
Ich habe das gleiche Problem, habe die NSCameraUsageDescription in info.plist hinzugefügt, stürze aber immer noch mit der gleichen Meldung ab. Hast du es geschafft, es zu lösen? Anscheinend hat niemand, der dieses Problem beantwortet hat, verstanden, dass es abstürzt, selbst wenn Sie den Schlüssel bereits hinzugefügt haben.
CarmenA
Wenn Sie den Eintrag zur richtigen info.plist-Datei hinzugefügt haben, dieser jedoch weiterhin fehlgeschlagen ist, kann dies daran liegen, dass Xcode Änderungen an Ressourcendateien wie info.plist, Bildern, Audio, Filmen usw. manchmal nicht bemerkt. Möglicherweise müssen Sie eine ausführen Bereinigen oder löschen Sie das App-Build-Produkt aus dem Ordner "Abgeleitete Daten", um Xcode zur Verwendung der neuesten Version zu zwingen.
Walt Sellers

Antworten:

227

Nach iOS 10 müssen Sie in Info.plist wie folgt eine Nutzungsbeschreibung aller datenschutzrelevanten Daten des Systems definieren und bereitstellen, auf die Ihre App zugreift:

Kalender

Key    :  Privacy - Calendars Usage Description    
Value  :  $(PRODUCT_NAME) calendar events

Erinnerung :

Key    :   Privacy - Reminders Usage Description    
Value  :   $(PRODUCT_NAME) reminder use

Kontakt :

Key    :   Privacy - Contacts Usage Description     
Value  :  $(PRODUCT_NAME) contact use

Foto:

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

Bluetooth-Freigabe:

Key    :  Privacy - Bluetooth Peripheral Usage Description     
Value  :  $(PRODUCT_NAME) Bluetooth Peripheral use

Mikrofon:

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

Kamera:

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

Ort :

Key    :  Privacy - Location Always Usage Description   
Value  :  $(PRODUCT_NAME) location use

Key    :  Privacy - Location When In Use Usage Description   
Value  :  $(PRODUCT_NAME) location use

Heide:

Key    :  Privacy - Health Share Usage Description   
Value  :  $(PRODUCT_NAME) heath share use

Key    :  Privacy - Health Update Usage Description   
Value  :  $(PRODUCT_NAME) heath update use

HomeKit:

Key    :  Privacy - HomeKit Usage Description   
Value  :  $(PRODUCT_NAME) home kit use

Medienbibliothek :

Key    :  Privacy - Media Library Usage Description   
Value  :  $(PRODUCT_NAME) media library use

Bewegung:

Key    :  Privacy - Motion Usage Description   
Value  :  $(PRODUCT_NAME) motion use

Spracherkennung :

Key    :  Privacy - Speech Recognition Usage Description   
Value  :  $(PRODUCT_NAME) speech use

SiriKit:

Key    :  Privacy - Siri Usage Description  
Value  :  $(PRODUCT_NAME) siri use

TV-Anbieter:

Key    :  Privacy - TV Provider Usage Description   
Value  :  $(PRODUCT_NAME) tvProvider use

Detaillierte Informationen erhalten Sie unter diesem Link.

Bhoopi
quelle
1
Privacy - Photo Library Usage Descriptiontat es für den FehlerNSPhotoLibraryUsageDescription
Bruno Bieri
Ich bin neu in der Apple-Entwicklung und dieses Problem war ärgerlich. Ich bin froh, dass ich darauf gestoßen bin. Prost!
user2529011
1
@ Maylor Taylor: Ja, du musst es hinzufügen.
Bhoopi
111

Da hat Apple geändert, wie Sie auf beliebige Benutzer private Datentypen in zugreifen können iOS 10.

Sie müssen den Privacy - Camera usage descriptionSchlüssel " " zu Ihren Info.plistApps und deren Nutzungsinformationen hinzufügen, die für Ihre Anwendung gelten, wie im folgenden Beispiel angegeben, das ich zum Scannen von Barcodes verwendet habe.

Weitere Informationen finden Sie im folgenden Screenshot.

Geben Sie hier die Bildbeschreibung ein

Ramkrishna Sharma
quelle
62

Sie müssen diesen unten stehenden Schlüssel in info.plist hinzufügen.

NSCameraUsageDescription Oder Privacy - Camera usage description

Und fügen Sie eine Beschreibung der Verwendung hinzu.

Detaillierte Screenshots finden Sie unter diesem Link

Bluewings
quelle
Es hört sich so an, als hätte er das bereits hinzugefügt, bekommt aber immer noch den Absturz. Es ist das gleiche Problem, das ich habe, wo, obwohl das KVP in der Liste ist, es immer noch abstürzt, als ob es nicht ist.
43

Alternativ können Sie Info.plist als Quellcode öffnen und Folgendes hinzufügen:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
Ayalcinkaya
quelle
4
Falls jemand die "NSCameraUsageDescription" "NSCameraUsageDescription" = "Requires access to the camera";lokalisieren möchte , fügen Sie sie in Ihre lokalisierte Datei infoPlist.strings ein
Khurram Shehzad
30

Verwenden Sie diese Rohwerte und kopieren Sie sie in info.plist

    <key>NSCalendarsUsageDescription</key>
      <string>$(PRODUCT_NAME) calendar events</string>
    <key>NSRemindersUsageDescription</key>
      <string>$(PRODUCT_NAME) reminder use</string>
    <key>NSCameraUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSMicrophoneUsageDescription</key>
      <string>This app requires to access your microphone to record video with your voice send via chat</string>
    <key>NSPhotoLibraryUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSContactsUsageDescription</key>
       <string>$(PRODUCT_NAME) contact use</string>
    <key>NSLocationAlwaysUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationWhenInUseUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
Zeeshan
quelle
von dir hast du diese rohen Schlüsselnamen?
Omar N Shamali
Das ist toll. Es hat mich davor
bewahrt
26

Die xcode-Benutzeroberfläche hat sich von einer Version zur nächsten etwas geändert. Hier aktualisieren Sie die Liste für 9.0 Beta 4, wenn dies für Project -> Target -> Info hilfreich istGeben Sie hier die Bildbeschreibung ein

user3325025
quelle
2
Dies sollte die akzeptierte Antwort sein! Ich hatte genau das gleiche Problem mit XCode 9.2, obwohl ich es bereits <key>NSCameraUsageDescription</key>zur info.plist hinzugefügt hatte .
Psantos
2
Definitiv akzeptierte Antwort !! Ich habe zwei Ziele in meinem Projekt und habe versucht, diese <key>NSCameraUsageDescription</key>zur zweiten info.plist- Datei hinzuzufügen , aber ohne Auswirkung. Ich kann bestätigen, dass XCode (10.1) diese Änderungen definitiv nicht berücksichtigt, indem ich den Git-Status ausführe , weil meine info.plist für ein anderes Ziel keine Änderungen hatte. Der richtige Weg ist also, über Projekt-> Ziel-> Info zu gehen . Danke, Mann!
BH.Scene
4

Ein weiteres Beispiel, mit dem ich beim Versuch, die Kamera zu verwenden, konfrontiert war, war, dass sie _CRASHING_DUE_TO_PRIVACYauch nach dem Hinzufügen der "Beschreibung der Kameranutzung" immer noch mit einem Absturz beschäftigt war . Nachdem Sie nichts Greifbares vom Aufrufstapel erhalten hatten, wechselten Sie zum "Organizer" und sahen sich die Absturzberichte auf dem Gerät an. Ich stellte fest, dass es sich aufgrund der fehlenden "Beschreibung der Mikrofonverwendung" tatsächlich um die Privatsphäre beschwerte. Ich fügte das hinzu und wurde solch einen kryptischen Zusammenbruch los.

Yoku
quelle
4

Für diejenigen, die immer noch den Fehler erhalten, obwohl Sie der Info.plist die richtigen Schlüssel hinzugefügt haben:

Stellen Sie sicher, dass Sie den Schlüssel in die richtige Info.plist einfügen. Neuere Version von xCode, hat anscheinend 3 Info.plist.

Einer befindet sich unter dem Ordner mit dem Namen Ihrer App, wodurch das Problem für mich gelöst wurde.

Der zweite befindet sich unter YourappnameTests und der dritte unter YourappnameUITests.

Ich hoffe es hilft.

Vetuka
quelle
2

Wenn Sie Ionic verwenden, können Sie es direkt aus config.xml lösen, indem Sie das ios-Tag innerhalb der Plattform hinzufügen:

<platform name="ios">
.
.
.
    <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
        <string>photo library usage description</string>
    </config-file>
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
        <string>camera usage description</string>
    </config-file>
.
.
.
</platform>

Ich möchte mich auch bei @BHUPI antworten.

Victor Tavares
quelle
1

Ich habe die Liste überprüft und festgestellt, dass sie nicht funktioniert. Nur in den "Projekt" -Informationen müssen Sie die "Datenschutz - Kamera ..." hinzufügen, dann sollte es funktionieren. Ich hoffe, Ihnen zu helfen.

Mark90
quelle
0

Ich hatte das gleiche Problem und konnte keine Lösung finden. Mark90 hat recht, es gibt viele info.plist-Dateien und Sie sollten die richtigen bearbeiten. Gehen Sie zu Projekt, wählen Sie unter ZIELE das Projekt aus (nicht die Tests), wählen Sie in der Registerkartenleiste Info aus und fügen Sie die Berechtigung unter " Benutzerdefinierte iOS-Zieleigenschaften " hinzu.

Michael Marinos Likouras
quelle