NSCameraUsageDescription in crash del runtime di iOS 10.0?


154

Utilizzando l' iOS 10.0ultima beta. Avevo provato a utilizzare Camera per scansionare il codice a barre nella mia app e si è bloccato con questo errore di runtime.

Questa app si è arrestata in modo anomalo perché ha tentato di accedere ai dati sensibili della privacy senza una descrizione dell'utilizzo. Il file Info.plist dell'app deve contenere una chiave NSCameraUsageDescription con un valore stringa che spiega all'utente come l'app utilizza questi dati.

Metti questa chiave nel plist, ma è ancora andata in crash?


6
Ho lo stesso problema, ho aggiunto NSCameraUsageDescription in info.plist, ma si blocca ancora con lo stesso messaggio. Sei riuscito a risolverlo? Apparentemente, nessuno che ha risposto a questo problema ha capito che si blocca anche se hai già aggiunto la chiave.
CarmenA,

Se hai aggiunto la voce al file info.plist corretto, ma non è riuscito, potrebbe essere perché Xcode a volte non riesce a notare modifiche ai file di risorse come info.plist, immagini, audio, filmati, ecc. Potrebbe essere necessario eseguire un pulire o eliminare il prodotto build app dalla cartella Dati derivati ​​per forzare Xcode a utilizzare la versione più recente.
Walt Sellers,

Risposte:


227

Dopo iOS 10 devi definire e fornire una descrizione dell'utilizzo di tutti i dati sensibili della privacy del sistema a cui accede la tua app in Info.plist come di seguito:

Calendario

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

Promemoria :

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

Contatto:

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

Foto:

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

Condivisione Bluetooth:

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

Microfono:

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

Telecamera :

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

Posizione :

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

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

Heath:

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

Libreria multimediale:

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

Movimento:

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

Riconoscimento vocale:

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

SiriKit:

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

Provider TV:

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

Puoi ottenere informazioni dettagliate in questo link.


1
Privacy - Photo Library Usage Descriptionl'ha fatto per l'erroreNSPhotoLibraryUsageDescription
Bruno Bieri,

Sono nuovo di Apple Development e questo problema è stato fastidioso. Sono contento di esserci imbattuto. Saluti!
user2529011

1
@MaylorTaylor: Sì, devi aggiungerlo.
Bhoopi,

111

Poiché Apple ha cambiato il modo in cui è possibile accedere a qualsiasi tipo di dato privato dell'utente iOS 10 .

Devi aggiungere il Privacy - Camera usage descriptiontasto " " alla tua appInfo.plist e le relative informazioni di utilizzo che sono applicabili per la tua applicazione, come nell'esempio seguente ho fornito che ho usato per scansionare i codici a barre.

Per ulteriori informazioni, consultare lo screenshot seguente.

inserisci qui la descrizione dell'immagine


62

Devi aggiungere questo sotto chiave in info.plist.

NSCameraUsageDescription O Privacy - Camera usage description

E aggiungi una descrizione dell'uso.

Schermate dettagliate sono disponibili in questo link


Sembra che l'abbia già aggiunto ma che stia ancora ottenendo l'incidente. È lo stesso problema che sto riscontrando, anche se KVP è in programma, si blocca ancora come se non lo fosse.

43

In alternativa, apri Info.plist come codice sorgente e aggiungi questo:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>

4
nel caso in cui qualcuno stia cercando di localizzare "NSCameraUsageDescription", aggiungi il "NSCameraUsageDescription" = "Requires access to the camera";tuo file infoPlist.strings localizzato
Khurram Shehzad,

30

Usa questi valori non elaborati e copia 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>

da te hai questi nomi di chiave grezzi?
Omar N Shamali,

Questo è fantastico Mi ha salvato dal fare molti clic in xCode
MaylorTaylor

26

l'interfaccia utente di xcode è cambiata un po 'da una versione all'altra, quindi qui è dove aggiorni il plist per 9.0 beta 4 se aiuta Project -> Target -> Infoinserisci qui la descrizione dell'immagine


2
Questa dovrebbe essere la risposta accettata! Stavo riscontrando<key>NSCameraUsageDescription</key> lo stesso problema su XCode 9.2, nonostante abbia già aggiunto a info.plist .
psantos,

2
Risposta sicuramente accettata !! Ho due obiettivi nel mio progetto e ho provato ad aggiungerlo <key>NSCameraUsageDescription</key>al secondo file info.plist , ma senza alcun effetto, e posso confermare che XCode (10.1) non sta sicuramente prendendo in considerazione quelle modifiche eseguendo git status , perché la mia info.plist per un altro target non ha subito modifiche. Quindi il modo giusto è quello di passare attraverso il Progetto-> Target-> Informazioni . Grazie uomo!
bra.Scene

4

Un altro esempio che ho dovuto affrontare durante il tentativo di utilizzare la fotocamera era che era ancora impegnato a bloccarsi dando lo stesso _CRASHING_DUE_TO_PRIVACYanche dopo aver aggiunto la "Descrizione dell'utilizzo della fotocamera ". Dopo non essere riuscito a ottenere qualcosa di tangibile dallo stack di chiamate, è passato a "Organizer" e ha esaminato i rapporti sugli arresti anomali sul dispositivo. Ho scoperto che in realtà si lamentava della privacy a causa della mancante "Descrizione dell'uso del microfono". L'ho aggiunto e mi sono sbarazzato di una simile crisi criptica.


4

Per coloro che continuano a ricevere l'errore anche se hai aggiunto le chiavi appropriate in Info.plist:

Assicurati di aggiungere la chiave in Info.plist corretto. La versione più recente di xCode, a quanto pare ha 3 Info.plist.

Uno è nella cartella con il nome della tua app che ha risolto il problema per me.

Il secondo è sotto YourappnameTest e il terzo è sotto YourappnameUITests.

Spero che sia d'aiuto.


2

Se stai usando Ionic, puoi risolverlo direttamente da config.xml aggiungendo il tag ios all'interno della piattaforma:

<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>

Vorrei ringraziare anche la risposta di @BHUPI.



1

Ho controllato il plist e ho scoperto che non funziona, solo nelle informazioni sul "progetto", è necessario aggiungere "Privacy - Camera ....", quindi dovrebbe funzionare. Spero di aiutarti.


0

Ho avuto lo stesso problema e non sono riuscito a trovare una soluzione. Mark90 ha ragione, ci sono molti file info.plist e dovresti modificare il file corretto. Vai a Progetto, in TARGETS seleziona il progetto (non i test), nella barra delle schede seleziona Info e aggiungi l'autorizzazione in " Proprietà target iOS personalizzate ".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.