NSCameraUsageDescription w środowisku wykonawczym iOS 10.0 uległa awarii?

154

Korzystanie z iOS 10.0ostatniej wersji beta. Próbowałem użyć aparatu do skanowania kodu kreskowego w mojej aplikacji i zawiesił się z tym błędem w czasie wykonywania.

Ta aplikacja uległa awarii, ponieważ próbowała uzyskać dostęp do danych wrażliwych na prywatność bez opisu użytkowania. Aplikacja Info.plist musi zawierać klucz NSCameraUsageDescription z wartością ciągu wyjaśniającą użytkownikowi, w jaki sposób aplikacja wykorzystuje te dane.

Umieścić ten klucz w pliku plist, ale nadal się zawiesił?

user3069232
źródło
6
Mam ten sam problem, dodałem NSCameraUsageDescription w info.plist, ale nadal zawiesza się z tym samym komunikatem. Czy udało Ci się go rozwiązać? Najwyraźniej nikt, kto odpowiedział na ten problem, nie rozumiał, że ulega awarii, nawet jeśli już dodałeś klucz.
CarmenA,
Jeśli dodałeś wpis do prawidłowego pliku info.plist, ale nadal się nie udało, może to być spowodowane tym, że Xcode czasami nie zauważa zmian w plikach zasobów, takich jak info.plist, obrazy, audio, filmy itp. Może być konieczne wykonanie wyczyść lub usuń produkt kompilacji aplikacji z folderu danych pochodnych, aby wymusić na Xcode użycie najnowszej wersji.
Walt Sellers,

Odpowiedzi:

227

Po iOS 10 musisz zdefiniować i podać opis użytkowania wszystkich poufnych danych systemu, do których Twoja aplikacja ma dostęp w Info.plist, jak poniżej:

Kalendarz

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

Przypomnienie:

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

Kontakt :

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

Zdjęcie:

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

Udostępnianie Bluetooth:

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

Mikrofon:

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

Aparat fotograficzny :

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

Lokalizacja :

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

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

Zdrowie:

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

Biblioteka mediów:

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

Ruch:

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

Rozpoznawanie mowy :

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

SiriKit:

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

Dostawca telewizji:

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

Możesz uzyskać szczegółowe informacje w tym linku.

Bhoopi
źródło
1
Privacy - Photo Library Usage Descriptionzrobił to za błądNSPhotoLibraryUsageDescription
Bruno Bieri
Jestem nowy w rozwoju Apple i ten problem był irytujący. Cieszę się, że na to trafiłem. Twoje zdrowie!
user2529011
1
@MaylorTaylor: Tak, musisz to dodać.
Bhoopi
111

Ponieważ firma Apple zmieniła sposób uzyskiwania dostępu do prywatnych typów danych użytkownika w iOS 10.

Musisz dodać Privacy - Camera usage descriptionklucz " " do swojej aplikacji Info.plisti informacji o ich użyciu, które dotyczą twojej aplikacji, tak jak w poniższym przykładzie, który podałem, że skanowałem kody kreskowe.

Więcej informacji znajdziesz na poniższym zrzucie ekranu.

wprowadź opis obrazu tutaj

Ramkrishna Sharma
źródło
62

Musisz dodać ten klucz poniżej w info.plist.

NSCameraUsageDescription Lub Privacy - Camera usage description

Dodaj opis użycia.

Szczegółowe zrzuty ekranu są dostępne pod tym linkiem

Bluewings
źródło
Wygląda na to, że już to dodał, ale wciąż się zdarza. To ten sam problem, który mam, gdzie pomimo tego, że KVP jest na plistie, nadal się zawiesza, jakby tak nie było.
43

Alternatywnie otwórz Info.plist jako kod źródłowy i dodaj to:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>
ayalcinkaya
źródło
4
w przypadku, gdy ktoś szuka lokalizacji „NSCameraUsageDescription”, dodaj "NSCameraUsageDescription" = "Requires access to the camera";swój zlokalizowany plik infoPlist.strings
Khurram Shehzad
30

Użyj tych surowych wartości i skopiuj je w 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
źródło
od ciebie masz te surowe nazwy kluczy?
Omar N Shamali
To jest świetne. Uratowało mnie to przed wieloma kliknięciami w xCode
MaylorTaylor,
26

Interfejs użytkownika xcode zmienił się nieco z jednej wersji na drugą, więc tutaj aktualizujesz plist do wersji 9.0 beta 4, jeśli pomaga to Projekt -> Cel -> Informacjewprowadź opis obrazu tutaj

user3325025
źródło
2
To powinna być akceptowana odpowiedź! Miałem ten sam problem w XCode 9.2, mimo że już dodałem <key>NSCameraUsageDescription</key>do info.plist .
psantos
2
Zdecydowanie zaakceptowana odpowiedź !! Mam dwa cele w moim projekcie i próbowałem dodać to <key>NSCameraUsageDescription</key>do drugiego pliku info.plist , ale bez skutku i mogę potwierdzić, że XCode (10.1) zdecydowanie nie bierze tych zmian pod uwagę, uruchamiając status git , ponieważ mój info.plist dla innego celu nie zmienił się. Zatem właściwą drogą jest przejście przez Projekt-> Cel-> Informacje . Dzięki!
biustonosz. Scena
4

Innym przypadkiem, z którym się spotkałem podczas próby użycia aparatu, było to, że nadal był zajęty, dając to samo, _CRASHING_DUE_TO_PRIVACYnawet po dodaniu „Opisu użycia aparatu”. Po nieudanym uzyskaniu czegokolwiek namacalnego ze stosu wywołań, przełączyłem się do „Organizatora” i przejrzałem raporty o awariach na urządzeniu. Okazało się, że w rzeczywistości narzekałem na prywatność z powodu braku „Opisu użycia mikrofonu”. Dodałem to i pozbyłem się takiej tajemniczej awarii.

Yoku
źródło
4

Dla tych, którzy nadal otrzymują błąd, mimo dodania odpowiednich kluczy do Info.plist:

Upewnij się, że dodajesz klucz do prawidłowego Info.plist. Nowsza wersja xCode, podobno ma 3 Info.plist.

Jeden znajduje się w folderze z nazwą Twojej aplikacji, co rozwiązało problem.

Drugi znajduje się pod YourappnameTests, a trzeci w YourappnameUITests.

Mam nadzieję, że to pomoże.

Vetuka
źródło
2

Jeśli używasz Ionic, możesz rozwiązać ten problem bezpośrednio z config.xml , dodając tag wewnątrz platformy ios:

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

Chciałbym również podziękować @BHUPI answer.

Victor Tavares
źródło
1

Sprawdziłem plist i stwierdziłem, że nie działa, tylko w info o "projekcie" trzeba dodać "Prywatność - Kamera ....", wtedy powinno działać. Mam nadzieję, że ci pomogę.

Mark90
źródło
0

Miałem ten sam problem i nie mogłem znaleźć rozwiązania. Mark90 ma rację, jest dużo plików info.plist i powinieneś edytować poprawną. Przejdź do projektu, w sekcji CELE wybierz projekt (nie testy), na pasku zakładek wybierz Informacje i dodaj uprawnienia w sekcji „ Niestandardowe właściwości docelowe systemu iOS ”.

Michael Marinos Likouras
źródło