Опис NSCameraUsageDescription в збої під час виконання iOS 10.0?


154

Використання iOS 10.0останньої бета-версії. Я намагався використати камеру для сканування штрих-коду в моєму додатку, і він зазнав аварії з цією помилкою виконання.

Цей додаток вийшов з ладу, оскільки він намагався отримати доступ до конфіденційних даних без опису використання. Info.plist додатка повинен містити ключ NSCameraUsageDescription зі строковим значенням, що пояснює користувачеві, як додаток використовує ці дані.

Покладіть цей ключ у пліст, але він все одно розбився?


6
У мене той самий випуск, я додав NSCameraUsageDescription у info.plist, але все одно виходить з ладу з тим же повідомленням. Вам вдалося це вирішити? Мабуть, ніхто, хто відповів на цю проблему, не зрозумів, що вона виходить з ладу, навіть якщо ви вже додали ключ.
КарменА

Якщо ви додали запис до правильного файлу info.plist, але він все ще не вдався, це може бути через те, що Xcode іноді не помічає змін у файлах ресурсів, таких як info.plist, зображення, аудіо, фільми тощо. Можливо, вам потрібно буде виконати очистити або видалити продукт створення програми з папки "Отримані дані", щоб змусити Xcode використовувати останню версію.
Walt Sellers

Відповіді:


227

Після iOS 10 вам слід визначити та надати опис використання всіх даних, що стосуються конфіденційності системи, до яких користується ваш додаток у Info.plist, як показано нижче:

Календар

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

Нагадування:

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

Контакт:

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

Фото:

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

Обмін Bluetooth:

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

Мікрофон:

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

Камера:

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

Розташування :

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

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

Хіт:

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

Медіатека:

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

Рух:

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

Розпізнавання мови :

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

SiriKit:

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

Телевізійний провайдер:

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

Детальну інформацію ви можете отримати за цим посиланням.


1
Privacy - Photo Library Usage Descriptionзробив це за помилкуNSPhotoLibraryUsageDescription
Бруно Бієрі

Я новачок у Apple Development, і це питання дратувало. Радий, що я натрапив на це. Ура!
користувач2529011

1
@MaylorTaylor: Так, ви повинні додати його.
Bhoopi

111

Оскільки Apple змінила, як ви можете отримати доступ до будь-яких типів приватних даних користувачів у iOS 10.

Вам потрібно додати Privacy - Camera usage descriptionключ " " до вашої програми Info.plistта інформацію про їх використання, яка застосовується для вашої програми, як у наведеному нижче прикладі я передбачив, що я використовував сканування штрих-кодів.

Для отримання додаткової інформації знайдіть скріншот нижче.

введіть тут опис зображення


62

Ви повинні додати цей ключ нижче в info.plist.

NSCameraUsageDescription Або Privacy - Camera usage description

І додайте опис використання.

Детальні скріншоти доступні за цим посиланням


Здається, він уже додав це, але все-таки отримує збій. Це те саме питання, яке я маю там, де, хоча той, що KVP знаходиться у списку, він все одно розбивається, як ніби його немає.

43

Або відкрийте Info.plist як вихідний код і додайте це:

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

4
в разі , якщо хто - то шукає , щоб локалізувати «NSCameraUsageDescription», додати "NSCameraUsageDescription" = "Requires access to the camera";в локалізованої infoPlist.strings файл
Khurram Shehzad

30

Використовуйте ці вихідні значення та скопіюйте у 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>

від вас дійшли ці нераціональні ключові імена?
Омар Н

Це чудово. Це врятувало мене від великої кількості кліків у xCode
MaylorTaylor

26

користувальницький інтерфейс xcode трохи змінився від однієї версії до іншої, тому ось, де ви оновите пліст для 9.0 бета-версії 4, якщо це допомагає Project -> Target -> Infoвведіть тут опис зображення


2
Це має бути прийнята відповідь! У мене був такий самий випуск на XCode 9.2, незважаючи на те, що він уже доданий <key>NSCameraUsageDescription</key>до списку info.plist .
psantos

2
Однозначно прийнята відповідь !! У моєму проекті є дві цілі, і я намагався додати це <key>NSCameraUsageDescription</key>до другого файлу info.plist , але без ефекту, і я можу підтвердити, що XCode (10.1) точно не враховує ці зміни, запускаючи статус git , оскільки мій info.plist для іншої цілі не змінив. Тож правильний шлях - пройти Проект-> Ціль-> Інформація . Спасибі людино!
бюстгальтер. Сцена

4

Іншим випадком, з яким я зіткнувся під час спроби використання камери, було те, що вона все ще зайнята збоями, даючи те саме, _CRASHING_DUE_TO_PRIVACYнавіть після додавання "Опис використання камери". Після того, як не вдалося отримати щось відчутне зі стека викликів, переключився на "Органайзер" і вивчив звіти про аварійне завершення роботи пристрою. Я виявив, що насправді скаржиться на конфіденційність через відсутність "Опису використання мікрофона". Я додав це і позбувся такої криптовалюти.


4

Для тих, хто все ще отримує помилку, навіть якщо ви додали належні ключі до Info.plist:

Переконайтеся, що ви додаєте ключ у правильний Info.plist. Більш нова версія xCode, мабуть, має 3 Info.plist.

Один знаходиться під папкою з назвою вашого додатка, що вирішило для мене проблему.

Друга - під YourappnameTests, а третя - під YourappnameUITests.

Сподіваюся, це допомагає.


2

Якщо ви використовуєте Ionic, ви можете вирішити це безпосередньо з config.xml , додавши всередині тегу 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>

Я також хотів би подякувати @BHUPI відповідь.



1

Я перевірив пліст і виявив, що він не працює, лише в інформації про "проект" вам потрібно додати "Конфіденційність - Камера ....", то він повинен працювати. Сподіваюся, що вам допоможуть.


0

У мене була така ж проблема і не могла знайти рішення. Mark90 вірно є багато файлів info.plist, і вам слід редагувати правильний. Перейдіть до проекту, під TARGETS виберіть проект (не тести), на панелі вкладок виберіть Інформація та додайте дозвіл у розділі " Спеціальні властивості iOS Target ".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.