iOS 10 - изменения в запросе разрешений камеры, микрофона и библиотеки фотографий, вызывающие сбой приложения

iOS 10 Теперь требуется разрешение пользователя для доступа к библиотеке мультимедиа, фотографиям, камере и другому подобному оборудованию. Решением для этого является добавление их ключей вinfo.plist с описанием для пользователя, как мы используем их данные,

Я мог найти только несколько ключей

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

Я хочу знать, есть ли еще ключи для другого оборудования, как вiOS 10 если вы не предоставилиinfo.plist при правильном описании ключей ваше приложение будет зависать если сборка с использованием XCode - 8 бета.

 sage44421 июл. 2016 г., 09:57
iOS 10 не под NDA?
 Syed Ali Salman21 июл. 2016 г., 09:58
Я не уверен в этом.

Ответы на вопрос(3)

Ниже приведены коды для примера разрешения запроса ios 10 дляinfo.plist.
Вы можете изменить свое собственное сообщение.

    <key>NSCameraUsageDescription</key>
    <string>${PRODUCT_NAME} Camera Usage</string>

    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>${PRODUCT_NAME} BluetoothPeripheral</string>

    <key>NSCalendarsUsageDescription</key>
    <string>${PRODUCT_NAME} Calendar Usage</string>

    <key>NSContactsUsageDescription</key>
    <string>${PRODUCT_NAME} Contact fetch</string>

    <key>NSHealthShareUsageDescription</key>
    <string>${PRODUCT_NAME} Health Description</string>

    <key>NSHealthUpdateUsageDescription</key>
    <string>${PRODUCT_NAME} Health Updates</string>

    <key>NSHomeKitUsageDescription</key>
    <string>${PRODUCT_NAME} HomeKit Usage</string>

    <key>NSLocationAlwaysUsageDescription</key>
    <string>${PRODUCT_NAME} Use location always</string>

    <key>NSLocationUsageDescription</key>
    <string>${PRODUCT_NAME} Location Updates</string>

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>${PRODUCT_NAME} WhenInUse Location</string>

    <key>NSAppleMusicUsageDescription</key>
    <string>${PRODUCT_NAME} Music Usage</string>

    <key>NSMicrophoneUsageDescription</key>
    <string>${PRODUCT_NAME} Microphone Usage</string>

    <key>NSMotionUsageDescription</key>
    <string>${PRODUCT_NAME} Motion Usage</string>

    <key>kTCCServiceMediaLibrary</key>
    <string>${PRODUCT_NAME} MediaLibrary Usage</string>

    <key>NSPhotoLibraryUsageDescription</key>
    <string>${PRODUCT_NAME} PhotoLibrary Usage</string>

    <key>NSRemindersUsageDescription</key>
    <string>${PRODUCT_NAME} Reminder Usage</string>

    <key>NSSiriUsageDescription</key>
    <string>${PRODUCT_NAME} Siri Usage</string>

    <key>NSSpeechRecognitionUsageDescription</key>
    <string>${PRODUCT_NAME} Speech Recognition Usage</string>

    <key>NSVideoSubscriberAccountUsageDescription</key>
    <string>${PRODUCT_NAME} Video Subscribe Usage</string>

iOS 11 и плюс, если вы хотите добавить фото / изображение в вашу библиотеку, то вы должны добавить этот ключ

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>${PRODUCT_NAME} library Usage</string>
 Yucel Bayram07 дек. 2017 г., 08:45
Спасибо, это верный ответ, просто Apple говорит: «Нет необходимости указывать название вашего приложения. Система уже идентифицирует ваше приложение как то, которое делает запрос».
 Dinesh Phalwadiya06 апр. 2018 г., 07:20
Вот ответ, который я искал
Решение Вопроса

Cocoa Keys что вы можете указать в своемInfo.plist файл:

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

(Цель Xcode -> Информация -> Пользовательские свойства цели iOS)

iOS уже требуются разрешения для доступа к микрофону, камере и медиатекеранее (iOS6, iOS7), но так какiOS10 приложение будетавария если вы не предоставите описание, почему вы запрашиваете разрешение (оно не может быть пустым).

Секретные ключи с описанием примера:

Источник

Вы также можете открыть Info.plist в качестве исходного кода:

Источник

И добавьте их так:

<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>

Список всех ключей конфиденциальности:

NSCameraUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSContactsUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSAppleMusicUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
kTCCServiceMediaLibrary
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription
Обновление 2019:

В последние месяцы два моих приложения былиотвергнуто во время обзора, потому что описание использования камеры не определяло, что я делаю с фотографиями.

Я должен был изменить описание от${PRODUCT_NAME} need access to the camera to take a photo в${PRODUCT_NAME} need access to the camera to update your avatar хотя контекст приложения был очевиден (пользователь нажал на аватар).

Похоже, что Apple теперь уделяет еще больше внимания описаниям использования конфиденциальности, и мы должны подробно объяснить, почему мы запрашиваем разрешение.

 Syed Ali Salman15 сент. 2016 г., 07:44
@ sumofighter666 начиная с iOS 10, это обязательно.
 FateNuller21 июл. 2017 г., 20:35
@KlimczakM Мое приложение не использует эти функции, но, по-видимому, пару моих платформ используют. Это объясняет, почему мне нужно уточнить. Я все еще пытаюсь понять, почему iTunes Connect сообщает, что мое приложение обращается к библиотеке фотографий. Я не смог найти ничего в рамках, которые я использую.
 KlimczakM21 июл. 2016 г., 11:27
@Syed Али Салман Вы правы - он выйдет из строя после iOS10, теперь действительно получите ваш вопрос. Обновлю ответ. :)
 FateNuller21 июл. 2017 г., 18:43
Мое приложение не использует НИКАКИХ из этих функций. Зачем мне их включать ???
 KlimczakM21 июл. 2017 г., 20:07
@FateNuller Вы, конечно, должны добавить разрешения на функции, которые вы используете.
 Stonz209 нояб. 2016 г., 22:03
Ранее я комментировал возможность оставлять эти значения пустыми, чтобы просто отображать сгенерированное системой сообщение, и, хотя оно работает нормально функционально, похоже, что Apple автоматически отклонит ваш двоичный файл, если вы включите эти ключи, но не установите для них значение ,
 Syed Ali Salman21 июл. 2016 г., 10:03
да, но изменение заключается в том, что приложение теперь будет аварийно завершать работу, если вы не предоставили описание того, почему мы запрашиваем разрешение. Пожалуйста, поправьте меня, если я ошибаюсь.
 sumofighter66601 авг. 2016 г., 12:39
Я надеюсь, что яблоко решит, является ли это обязательным или нет. Согласно яблочной документации это не так:Explain why your app needs the information if it’s not obvious. You can add custom text to the system-provided permission request alert. Make the text specific and polite, so people don’t feel pressured. Keep the text short, and use sentence case. There’s no need to include your app name. The system already identifies your app as the one making the request.
 Mike Gledhill28 июл. 2017 г., 15:35
Я не мог согласиться с этими комментариями. Это шокирует, что Apple сходит с рук с такими вещами. На прошлой неделе мое приложение для iPhone работало, на этой неделе (после обновления iOS) оно полностью вылетает, когда пользователь пытается сфотографировать. Нет ошибок ... нет предположений о том, что произошло, просто злой пользователь. Apple, на самом деле, самая недружелюбная компания для разработчиков, с которой я имел дело со времен Palm ....
 lppier12 мар. 2017 г., 05:40
Яблоко! Если вы читаете это ... это должно быть отмечено на этапе проверки загрузки приложения, а не когда приложение загружено, и вы отклоняете его, говоря неверный двоичный файл. Насколько сложно это сделать ??
 Gabriel24 нояб. 2016 г., 07:33
Мне кажется, что этополная чушь от Apple, чтобы приложение просто зависало, когда ему не хватаетописание разрешения... Какой плохой пользовательский опыт! (Анонимные) жалобы быстро распространяются в обзоре AppStore ... И, конечно, Simultor ведет себя по-другому ...

Фото :

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

Микрофон:

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

Камера:

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use
 BangOperator23 июл. 2019 г., 07:24
Правильные клавиши похожиNSPhotoLibraryUsageDescription.

Ваш ответ на вопрос