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?


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.


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


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


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>

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>

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


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.


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.


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.



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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.