iOS 10 - зміни в запитах дозволів на камеру, мікрофон та бібліотеку фотографій, що спричиняють збій програми


103

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

Я міг знайти лише кілька ключів

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

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


чи не iOS 10 в NDA?
sage444

Я не впевнений у цьому.
Сид Алі Салман

Відповіді:


138

[ОНОВНЕНИЙ список ключів конфіденційності до iOS 13 - див. Нижче]

Є список усіх, Cocoa Keysщо ви можете вказати у своєму Info.plistфайлі:

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

(Xcode: Target -> Info -> Custom IOS Target Properties)

iOS вже вимагав дозволу на доступ до мікрофона, камери та медіатеки раніше (iOS 6, iOS 7), але оскільки програма iOS 10 вийде з ладу, якщо ви не надасте опис, чому ви просите дозволу (це не може бути порожній).

Ключі конфіденційності з прикладом опису: шпаргалку

Джерело

Ви також можете відкрити Info.plistяк вихідний код: вихідний код

Джерело

І додайте такі ключі конфіденційності:

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

Список усіх ключів конфіденційності: [ОНОВЛЕНО до iOS 13]

NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
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 зараз приділяє ще більше уваги описам використання конфіденційності, і ми повинні детально пояснити, чому ми просимо дозволу.


2
так, але, проте, зміна полягає в тому, що додаток тепер вийде з ладу, якщо ви не надали опис того, чому ми просимо дозволу. будь ласка, виправте мене, якщо я помиляюся.
Сид Алі Салман

1
@Syed Ali Salman Ви маєте рацію - вона вийде з ладу з iOS10, тепер дійсно отримайте своє запитання. Відповідь буде оновлено. :)
KlimczakM

1
Я сподіваюся, яблуко вирішить, обов’язково це чи ні. Згідно з яблучною документацією це не так: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.
sumofighter666

Раніше я коментував можливість залишити ці значення порожніми, щоб просто відобразити сформоване системою повідомлення, і, хоча воно працює функціонально, здається, що Apple автоматично відхилить ваш бінарний файл, якщо ви включите ці клавіші, але не встановите для них значення. .
Stonz2

13
Мені здається, що це цілковита дурниця від Apple , щоб програма просто вийшла з ладу, коли їй не вистачає дозволу опису ... Який поганий досвід користувача! (Anonymous) скарги швидко протікають в огляді AppStore ... І звичайно, Simultor поводиться інакше ...
Габріель

65

Нижче наведено коди для 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>

Дякую, його правдива відповідь, просто Apple каже: "Не потрібно вказувати назву вашого додатка. Система вже ідентифікує ваш додаток як той, хто робить запит".
Yucel Bayram

2
Ось відповідь, яку я шукав
Дінеш Фалвадія

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