2016-07-21 3 views
76

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

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

NSPhotoLibraryUsageDescription 
NSMicrophoneUsageDescription 
NSCameraUsageDescription 

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

+0

is't iOS 10 in under NDA? – sage444

+0

Я не уверен в этом. –

+0

Разрешение в Info.plist: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html –

ответ

98

Существует список всех Cocoa Keys, которые вы можете указать в Info.plist файле:

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

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

IOS уже необходимых разрешений для доступа к микрофону, камере и медиатеке ранее (iOS6, iOS7), но с iOS10 приложения будут crash, если вы не предоставите desc ription, почему вы просите разрешения (он не может быть пустым).

ключи конфиденциальности с описанием, например: cheatsheet

Source

Вы также можете открыть Info.plist как исходный код: source code

Source

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

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

Да, но, тем не менее, изменение заключается в том, что приложение теперь сбой, если вы Приведено описание того, почему мы просим разрешения. пожалуйста, поправьте меня, если я ошибаюсь. –

+1

@Syed Ali Salman Вы правы - это сбой с iOS10, теперь действительно получите ваш вопрос. Будет обновлен ответ. :) – KlimczakM

+1

Надеюсь, что яблоко решит, является ли оно обязательным или нет. Согласно документации на яблоко это не так: «Объясните, почему ваше приложение нуждается в информации, если это не очевидно. Вы можете добавить пользовательский текст в системное уведомление о запросе разрешения. Сделайте текст конкретным и вежливым, чтобы люди не чувствовали давления. Держите текст коротким и используйте случай предложения. Вам не нужно включать ваше имя приложения. Система уже идентифицирует ваше приложение как того, кто делает запрос. « – sumofighter666

18

Вы должны добавить это разрешение в Info.plist для прошивки 10. Дополнительных ссылок All Permission.

Фото:

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 
44

Здесь Вы можете найти коды для 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> 
+0

Спасибо, ее истинный ответ, просто Apple говорит: «Нет необходимости включать ваше имя приложения. Система уже идентифицирует ваше приложение как создающее запрос." –

 Смежные вопросы

  • Нет связанных вопросов^_^