Приложение iOS 10 разбилось, поскольку оно пыталось получить доступ к конфиденциальным данным

Я запускаю свой проект, который работал нормально раньше, но после обновления моего xcode мое приложение выходит из строя и дает эту ошибку:

Это приложение потерпело крах, поскольку оно попыталось получить доступ к конфиденциальным данным без описания использования. Приложение Info.plist должно содержать ключ NSCameraUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.

Ответ 1

Настройки конфиденциальности в iOS 10

Значительное изменение в iOS 10 заключается в том, что вы должны заранее объявить какой-либо доступ к конфиденциальным данным или ваше приложение сработает.

После соединения с iOS 10 вы должны объявить доступ к любым пользовательским типам данных. Вы делаете это, добавляя ключ использования к вашим приложениям Info.plist вместе с цельной строкой. Список фреймворков, считающихся частными, длинный

Контакты, календарь, напоминания, фотографии, совместное использование Bluetooth, микрофон, камера, местоположение, здоровье, HomeKit, медиабиблиотека, движение, CallKit, распознавание речи, SiriKit, провайдер ТВ.

Вам нужно поместить NSCameraUsageDescription в свой слой.

Как

<key> NSCameraUsageDescription </key>
<string>$(PRODUCT_NAME) uses Cameras</string>

например,

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

Проверьте все описания использования здесь.

Ответ 2

Я решил эту проблему на моем симуляторе, добавив следующую запись в info.plist

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

Я не использовал вышеописанное на реальном устройстве с помощью камеры, я думаю, для этого вам нужно также ввести следующее значение,

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

Я использую iOS 10.2

Ответ 3

Новые настройки конфиденциальности, которые необходимы, если вы создаете свои приложения с помощью iOS 10 SDK. "Целевая строка" ДОЛЖНА быть указана в вашем файле Info.plist, если вы получаете доступ к любым конфиденциальным данным.

A "Целевая строка" - это просто сообщение, объясняющее, почему приложение должно получить доступ к этой конкретной службе, которая будет отображаться пользователю при запросе разрешения (как это делали для служб определения местоположения с iOS 8). Не предоставление этой "Целевой цепочки" может привести к сбою вашего приложения.

Ответ 4

Ответ @Anbu имеет дополнительный пробел, который выдает исключение. Запись в Info.plist должна выглядеть следующим образом

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) uses camera</string>