Итак, сегодня я получил это письмо, в котором говорилось, что последняя сборка моего приложения была отклонена iTunes Connect из-за отсутствия некоторых описаний использования. Если быть точным:
Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSContactsUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSCalendarsUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSPhotoLibraryUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSBluetoothPeripheralUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSMicrophoneUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSMotionUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Как только эти проблемы будут исправлены, вы можете повторно загрузить исправленный двоичный файл.
Я понял, что они стали обязательными с iOS 10, но единственная проблема в том, что мое приложение не запрашивает разрешение на доступ к любому из них. Я думал, что описание было обязательным, только если вы действительно запрашивали разрешение?
Это потому, что одна из моих зависимостей (Cocoapods) может содержать код для запроса этих разрешений? Или эти описания являются обязательными, даже если я никогда не запрашиваю просмотр календаря, контактов и т. Д. Пользователей?
источник
PodFile
и список библиотек, которые вы используете (если вы используете сторонние cocoapods)?Ответы:
Описания являются обязательными для любого контента, который вы или какие-либо платформы, на которые вы ссылаетесь, не пытаетесь получить доступ. Ошибки генерируются при попытке доступа к контенту, если описание использования не было предоставлено, поэтому, если вы получаете эти ошибки, ваше приложение должно их запрашивать. Вы должны выяснить, почему ваше приложение или его фреймворки требуют их, и добавить соответствующие описания использования в info.plist вашего приложения.
Или, что еще лучше, если вам не нужен доступ, посмотрите, есть ли способ не запрашивать его (или использовать ненужные фреймворки).
источник
iOS 10 должна добавить разрешение в info.plist, просто просмотрите этот БЛОГ: - settings-in-ios-10 вы все поняли.
Добавьте разрешение в базу файла info.plist в журнале ошибок .
NSCameraUsageDescription
<key>NSCameraUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSContactsUsageDescription
<key>NSContactsUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSPhotoLibraryUsageDescription
<key>NSPhotoLibraryUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSBluetoothPeripheralUsageDescription
<key>NSBluetoothPeripheralUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSМикрофонИспользованиеОписание
<key>NSMicrophoneUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSMotionUsageDescription
<key>NSMotionUsageDescription</key> <string>$(PRODUCT_NAME) motion use.</string>
NSLocationAlwaysUsageDescription
<key>NSLocationAlwaysUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSLocationUsageDescription
<key>NSLocationUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSLocationWhenInUseUsageDescription
<key>NSLocationWhenInUseUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSRemindersUsageDescription
<key>NSRemindersUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSSiriUsageDescription
<key>NSSiriUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSVideoSubscriberAccountUsageDescription
<key>NSVideoSubscriberAccountUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSSpeechRecognitionUsageDescription
<key>NSSpeechRecognitionUsageDescription</key> <string>You have to describe the real usage for a human.</string>
NSCalendarsUsageDescription
<key>NSCalendarsUsageDescription</key> <string>You have to describe the real usage for a human.</string>
источник
$(PRODUCT_NAME)
. Вы можете увидеть свойство по умолчанию, какBundle name
в файле plist.Вы можете добавить в свой info.plist, например:
<key>NSCalendarsUsageDescription</key> <string>Explain the reasons for accessing...</string> <key>NSPhotoLibraryUsageDescription</key> <string>Explain the reasons for accessing...</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>Explain the reasons for accessing...</string>
и т.п.
Надеюсь кому-то поможет ...
источник
У меня была такая же проблема, и похоже, что если какая-либо структура, с которой вы ссылаетесь, имеет код, который запрашивает это разрешение (даже если ваше приложение никогда не запрашивает их), описания использования необходимы. Но согласно моему тесту, если вы их не запросите, они не появятся в списке разрешений вашего приложения.
источник
Календарь: ключ: конфиденциальность - календари Описание использования
Значение: события календаря $ (PRODUCT_NAME)
Напоминание: ключ: конфиденциальность - напоминания Описание использования
Значение: $ (PRODUCT_NAME) использование напоминания
Контакт : Ключ: Конфиденциальность - Использование контактов Описание
Значение: $ (PRODUCT_NAME) использование контактов
Фотография: ключ: конфиденциальность - использование библиотеки фотографий Описание
Значение: $ (PRODUCT_NAME) использование фото
Совместное использование Bluetooth: ключ: конфиденциальность - использование периферийных устройств Bluetooth Описание
Значение: $ (PRODUCT_NAME) Использование периферийных устройств Bluetooth
Микрофон: Ключ: Конфиденциальность - Использование микрофона Описание
Значение: $ (PRODUCT_NAME) использование микрофона
Камера: Ключ: Конфиденциальность - Использование камеры Описание
Значение: $ (PRODUCT_NAME) использование камеры
Местоположение: Ключ: Конфиденциальность - Местоположение Всегда Использование Описание
Значение: $ (PRODUCT_NAME) использование местоположения
Ключ: Конфиденциальность - Местоположение при использовании Описание использования
Значение: $ (PRODUCT_NAME) использование местоположения
Heath: Key: Privacy - Health Share Описание использования
Значение: $ (PRODUCT_NAME) использование heath share
Ключ: Конфиденциальность - Использование обновления работоспособности Описание
Значение: $ (PRODUCT_NAME) использование обновления здоровья
HomeKit: ключ: конфиденциальность - описание использования HomeKit
Значение: использование домашнего комплекта $ (PRODUCT_NAME)
Библиотека мультимедиа: ключ: конфиденциальность - использование библиотеки мультимедиа Описание
Значение: использование библиотеки мультимедиа $ (PRODUCT_NAME)
Движение: Ключ: Конфиденциальность - Использование движения Описание
Значение: $ (PRODUCT_NAME) использование движения
Распознавание речи: Ключ: Конфиденциальность - Распознавание речи Описание использования
Значение: $ (PRODUCT_NAME) использование речи
SiriKit: ключ: конфиденциальность - использование Siri Описание
Значение: $ (PRODUCT_NAME) siri use
Поставщик ТВ: Ключ: Конфиденциальность - Использование провайдером ТВ Описание
Значение: $ (PRODUCT_NAME) Использование tvProvider
источник
Для всех, кто задается вопросом, почему в вашем приложении внезапно появились все эти настройки разрешений, в первую очередь, это могло быть из-за CocoaPods или Carthage - они вставили крючки для всех этих разрешений. Я только что обновил свое приложение, чтобы использовать cordova-plugin-firebasex, у которого есть обширная установка Cocoapods (и зависимостей). Вы можете отключить эти разрешения ПЕРЕД установкой cocoapods в свой проект, поместив PermissionsConfiguration.xcconfig в корень вашего проекта - вы можете узнать больше об этом здесь: https://cocoapods.org/pods/Permission#installation
Все это меня удивило, когда новая версия моего приложения была отклонена из-за отсутствия 7 ключей / строк разрешений в файле Info.plist. Затем мне пришлось покопаться в моем проекте, чтобы найти причину этого, поскольку моему приложению не нужны и не используются какие-либо из этих разрешений (никогда не было).
Он может существовать, но на данный момент я не могу найти способ удалить разрешения после интеграции модулей ... придется копаться в том, как это сделать, не начиная мой проект заново.
источник