NSCameraUsageDescription di iOS 10.0 runtime crash?

154

Menggunakan iOS 10.0beta terakhir. Saya telah mencoba menggunakan Kamera untuk memindai kode batang di aplikasi saya, dan macet dengan kesalahan runtime ini.

Aplikasi ini macet karena berusaha mengakses data sensitif privasi tanpa deskripsi penggunaan. Aplikasi Info.plist harus berisi kunci NSCameraUsageDescription dengan nilai string yang menjelaskan kepada pengguna bagaimana aplikasi menggunakan data ini.

Masukkan kunci ini ke dalam daftar, tetapi masih macet?

pengguna3069232
sumber
6
Saya memiliki masalah yang sama, menambahkan NSCameraUsageDescription di info.plist, tetapi masih macet dengan pesan yang sama. Apakah Anda berhasil menyelesaikannya? Rupanya, tidak ada orang yang menjawab masalah ini yang mengerti bahwa itu crash walaupun Anda telah menambahkan kunci.
CarmenA
Jika Anda menambahkan entri ke file info.plist yang benar, tetapi masih gagal, mungkin karena Xcode terkadang gagal melihat perubahan pada file sumber daya seperti info.plist, gambar, audio, film, dll. Anda mungkin perlu melakukan bersihkan atau hapus produk build aplikasi dari folder Derived Data untuk memaksa Xcode menggunakan versi terbaru.
Penjual Walt

Jawaban:

227

Setelah iOS 10 Anda harus mendefinisikan dan memberikan deskripsi penggunaan semua data sensitif-sistem dari sistem yang diakses oleh aplikasi Anda di Info.plist seperti di bawah ini:

Kalender

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

Pengingat:

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

Hubungi:

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

Foto:

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

Berbagi Bluetooth:

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

Lokasi:

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

Perpustakaan Media:

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

Gerak:

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

Pengenalan suara :

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

SiriKit:

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

Penyedia TV:

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

Anda dapat memperoleh informasi terperinci di tautan ini .

Bhoopi
sumber
1
Privacy - Photo Library Usage Descriptionmelakukannya karena kesalahanNSPhotoLibraryUsageDescription
Bruno Bieri
Saya baru mengenal Apple Development dan masalah ini sangat mengganggu. Senang saya menemukannya. Bersulang!
user2529011
1
@MaylorTaylor: Ya, Anda harus menambahkannya.
Bhoopi
111

Karena Apple telah mengubah cara Anda dapat mengakses tipe data pribadi pengguna apa pun di iOS 10.

Anda perlu menambahkan Privacy - Camera usage descriptionkunci " " ke aplikasi Anda Info.plistdan informasi penggunaannya yang berlaku untuk aplikasi Anda, seperti dalam contoh di bawah ini saya berikan bahwa saya telah digunakan untuk memindai barcode.

Untuk informasi lebih lanjut, silakan temukan tangkapan layar di bawah ini.

masukkan deskripsi gambar di sini

Ramkrishna Sharma
sumber
62

Anda harus menambahkan kunci di bawah ini di info.plist.

NSCameraUsageDescription Atau Privacy - Camera usage description

Dan tambahkan deskripsi penggunaan.

Tangkapan layar terperinci tersedia di tautan ini

Bluewings
sumber
Sepertinya dia sudah menambahkan itu tetapi masih mendapatkan crash. Ini adalah masalah yang sama dengan yang saya alami di mana meskipun KVP ada dalam daftar, itu masih menabrak seolah-olah tidak.
43

Atau buka Info.plist sebagai kode sumber dan tambahkan ini:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
ayalcinkaya
sumber
4
jika seseorang mencari untuk melokalisasi "NSCameraUsageDescription", tambahkan file infoPlist.strings"NSCameraUsageDescription" = "Requires access to the camera"; Anda yang dilokalkan
Khurram Shehzad
30

Gunakan nilai mentah ini dan salin di 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
sumber
dari Anda mendapatkan nama-nama kunci mentah ini?
Omar N Shamali
Ini bagus. Itu menyelamatkan saya dari melakukan banyak klik di xCode
MaylorTaylor
26

UI xcode telah berubah sedikit dari satu versi ke versi berikutnya jadi di sinilah Anda memperbarui plist untuk 9.0 beta 4 jika itu membantu Project -> Target -> Infomasukkan deskripsi gambar di sini

pengguna3325025
sumber
2
Ini harus menjadi jawaban yang diterima! Saya mengalami masalah yang sama pada XCode 9.2, meskipun sudah ditambahkan <key>NSCameraUsageDescription</key>ke info.plist .
psantos
2
Jawaban yang pasti diterima !! Saya memiliki dua target dalam proyek saya, dan saya sudah mencoba menambahkan ini <key>NSCameraUsageDescription</key>ke file info.plist kedua , tetapi tanpa efek, dan saya dapat mengonfirmasi bahwa XCode (10.1) pasti tidak mempertimbangkan perubahan tersebut dengan menjalankan status git , karena info.plist saya untuk target lain tidak ada perubahan. Jadi cara yang benar adalah melalui Project-> Target-> Info . Terima kasih sobat!
bra.Scene
4

Contoh lain yang saya hadapi ketika mencoba menggunakan kamera, adalah masih sibuk menabrak memberikan _CRASHING_DUE_TO_PRIVACYbahkan setelah menambahkan "Deskripsi Penggunaan Kamera". Setelah gagal mendapatkan sesuatu yang nyata dari tumpukan panggilan, beralih ke "Organizer" dan melihat laporan kerusakan pada perangkat. Saya menemukan bahwa itu sebenarnya mengeluh tentang privasi karena "Deskripsi Penggunaan Mikrofon" yang hilang. Saya menambahkan itu dan menyingkirkan kerusakan samar seperti itu.

Yoku
sumber
4

Bagi mereka yang masih mendapatkan kesalahan meskipun Anda menambahkan kunci yang tepat ke Info.plist:

Pastikan Anda menambahkan kunci ke Info.plist yang benar. Versi xCode yang lebih baru, ternyata memiliki 3 Info.plist.

Satu berada di bawah folder dengan nama aplikasi Anda yang memecahkan masalah bagi saya.

Yang kedua di bawah YourappnameTests dan yang ketiga di bawah YourappnameUITests.

Semoga ini bisa membantu.

Vetuka
sumber
2

Jika Anda menggunakan Ionic, Anda dapat menyelesaikannya langsung dari config.xml dengan menambahkan tag platform ios di dalam:

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

Saya juga ingin berterima kasih pada jawaban @BHUPI.

Victor Tavares
sumber
1

Saya memeriksa daftar dan menemukan itu tidak berfungsi, hanya di "proyek" info, Anda perlu menambahkan "Privasi - Kamera ....", maka itu harus berfungsi. Semoga dapat membantu Anda.

Mark90
sumber
0

Saya memiliki masalah yang sama dan tidak dapat menemukan solusi. Mark90 benar ada banyak file info.plist dan Anda harus mengedit yang benar. Buka Proyek, di bawah TARGET pilih proyek (bukan tes), di bilah tab pilih Info dan tambahkan izin di bawah " Properti Target iOS Khusus ".

Michael Marinos Likouras
sumber