İOS 10.0 çalışma zamanı kazasında NSCameraUsage


154

Kullanımı iOS 10.0son beta. Uygulamamdaki barkodu taramak için Kamera'yı kullanmaya çalıştım ve bu çalışma zamanı hatasıyla çöktü.

Bu uygulama, kullanım açıklaması olmadan gizliliğe duyarlı verilere erişmeye çalıştığı için çöktü. Uygulamanın Info.plist'i, kullanıcıya uygulamanın bu verileri nasıl kullandığını açıklayan dize değerine sahip bir NSCameraUsageDescription anahtarı içermelidir.

Bu anahtarı pliste koyun, ama yine de çöktü?


6
Ben aynı sorunu var, info.plist NSCameraUsageDescription ekledi, ama yine de aynı mesajla çöküyor. Çözmeyi başardın mı? Görünüşe göre, bu soruna cevap veren kimse, anahtarı zaten eklemiş olsanız bile çöktüğünü anlamıyordu.
CarmenA

Girişi doğru info.plist dosyasına eklediyseniz, ancak yine de başarısız olduysa, bunun nedeni Xcode'un bazen info.plist, resimler, ses, filmler vb. Kaynak dosyalarındaki değişiklikleri fark etmemesi olabilir. Xcode'u en son sürümü kullanmaya zorlamak için uygulama oluşturma ürününü Türetilmiş Veri klasöründen temizleyin veya silin.
Walt Sellers

Yanıtlar:


227

İOS 10'dan sonra, Info.plist'te uygulamanızın eriştiği sistemin gizliliğe duyarlı tüm verilerini aşağıdaki gibi tanımlamanız ve sağlamanız gerekir:

Takvim

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

Hatırlatma :

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

İletişim :

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

Fotoğraf :

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

Bluetooth Paylaşımı:

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

Yer :

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

Medya kütüphanesi :

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

Hareket:

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

Konuşma tanıma :

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

SiriKit:

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

TV Sağlayıcısı:

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

Bu bağlantıdan detaylı bilgi alabilirsiniz .


1
Privacy - Photo Library Usage Descriptionhata yaptımNSPhotoLibraryUsageDescription
Bruno Bieri

Apple Development için yeniyim ve bu sorun can sıkıcıydı. Buna sevindim. Şerefe!
user2529011

1
@MaylorTaylor: Evet, eklemelisiniz.
Bhoopi

111

Apple değiştikçe, kullanıcının herhangi bir özel veri türüne nasıl erişebileceğiniz iOS 10.

Aşağıdaki örnekte olduğu gibi, barkodları taramak için kullandığımı belirtmiş olduğum gibi , " Privacy - Camera usage description" anahtarını uygulamanıza Info.plistve uygulamanız için geçerli olan kullanım bilgilerine eklemeniz gerekir .

Daha fazla bilgi için lütfen aşağıdaki ekran görüntüsünü bulun.

resim açıklamasını buraya girin


62

Bunu info.plist'e aşağıdaki anahtarı eklemeniz gerekir.

NSCameraUsageDescription Veya Privacy - Camera usage description

Ve kullanım açıklaması ekleyin.

Ayrıntılı ekran görüntüleri bu bağlantıda mevcuttur


Bunu zaten eklemiş gibi görünüyor, ancak yine de çöküyor. Bu, KVP'nin plistte olmasına rağmen, hala öyle değil gibi çöküyor.

43

Alternatif olarak Info.plist'i kaynak kodu olarak açın ve ekleyin:

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

4
birisinin "NSCameraUsageDescription" öğesini "NSCameraUsageDescription" = "Requires access to the camera";yerelleştirmek isterse , yerelleştirilmiş infoPlist.strings dosyanıza ekleyin
Khurram Shehzad

30

Bu ham değerleri kullanın ve info.plist'e kopyalayın

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

sizden bu ham anahtar isimlerini aldınız mı?
Omar N Shamali

Bu harika. Beni xCode çok tıklama yapmaktan kurtardı
MaylorTaylor

26

xcode kullanıcı arayüzü bir sürümden diğerine biraz değişti.resim açıklamasını buraya girin


2
Bu kabul edilen cevap olmalı! Zaten eklendi rağmen, XCode 9.2 bu çok aynı sorunu yaşıyordu <key>NSCameraUsageDescription</key>için Info.plist .
psantos

2
Kesinlikle kabul edilen cevap !! Projemde iki hedefim var ve bunu <key>NSCameraUsageDescription</key>ikinci info.plist dosyasına eklemeye çalıştım , ancak hiçbir etkisi olmadan ve XCode'un (10.1) kesinlikle git durumunu çalıştırarak bu değişiklikleri dikkate almadığını onaylayabilirim , çünkü başka bir hedef için info.plist'imde herhangi bir değişiklik olmadı. Bu yüzden doğru yol Project-> Target-> Info'dan geçmektir . Teşekkürler dostum!
sütyen.Sene

4

Kamerayı kullanmaya çalışırken karşılaştığım bir diğer örnek ise _CRASHING_DUE_TO_PRIVACY, "Kamera Kullanım Açıklaması" nı ekledikten sonra bile aynı şekilde çökme ile meşgul olmasıydı . Çağrı yığınından somut bir şey alamadan sonra, "Ajanda" ya geçildi ve cihazdaki kilitlenme raporlarına baktı. Aslında eksik "Mikrofon Kullanım Açıklaması" nedeniyle gizlilik hakkında şikayet olduğunu bulundu. Bunu ekledim ve böyle şifreli bir yıkımdan kurtuldum.


4

Info.plist'e doğru anahtarlar eklemiş olmanıza rağmen hatayı almaya devam edenler için:

Anahtarı doğru Info.plist'e eklediğinizden emin olun. XCode'un daha yeni sürümünde görünüşe göre 3 Info.plist var.

Bunlardan biri, uygulamanızın adıyla klasör altında, bu da benim için sorunu çözdü.

İkincisi YourappnameTest'ler altında, üçüncüsü YourappnameUITests altında.

Umarım yardımcı olur.


2

Ionic kullanıyorsanız, platform içi ios etiketi ekleyerek doğrudan config.xml dosyasından çözebilirsiniz :

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

@BHUPI cevabına da teşekkür etmek istiyorum.



1

Ben plist kontrol ve işe yaramadı bulundu, sadece "proje" bilgi, "Gizlilik - Kamera ...." eklemeniz gerekir, o zaman çalışması gerekir. Sana yardım etmeyi umuyorum.


0

Aynı sorunu yaşadım ve bir çözüm bulamadım. Mark90 çok fazla info.plist dosyası var ve doğru düzenlemelisiniz. Projeye gidin, HEDEFLER altında projeyi seçin (testleri değil), sekme çubuğunda Bilgi'yi seçin ve " Özel iOS Hedef Özellikleri " altına izin ekleyin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.