Подтвердить что ты не робот

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

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

Приложение не использует микрофон. Или я думаю.

Как отслеживать, где используется mike?

UPD23112016: учитывая, что ленивый ответ поддерживается, я подал новый запрос функции с яблоком, чтобы закрыть это отверстие безопасности.

UPD05042017: он по-прежнему беспокоит, что, как только вы прокси-сервер в какой-то сторонней структуре через какой-то наполовину испеченный NSMicrophoneUsageDescription у вас есть нулевой контроль над тем, где и когда он может использоваться, если пользователь соглашается для доступа к микрофону. Люди, пожалуйста, выполняйте тщательную проверку и NSMicrophoneUsageDescription, которая отражает тот факт, что микрофон используется кодом, который полностью вне вашего контроля, когда использование скрывается сторонней двоичной структурой. Спасибо.

4b9b3361

Ответ 1

Просто добавьте ключ NSMicrophoneUsageDescription и добавьте значение, объясняющее, почему ваше приложение использует микрофон. Это последнее требование в iOS 10.

Ответ 2

Для ленивых:

если вы хотите быстро добавить описания использования для большинства медиа-доступа (фотографии на устройстве, камеру, видеозапись, местоположение):

щелкните правой кнопкой мыши файл info.plist и → откройте как → Исходный код

затем вставьте следующее между текущими значениями:

<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for uploading videos</string>
<key>NSCameraUsageDescription</key>
<string>Need camera access for uploading Images</string>
<key>NSLocationUsageDescription</key>
<string>Need location access for updating nearby friends</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app will use your location to show cool stuffs near you.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Need Library access for uploading Images</string>

Эти описания, конечно, зависят от вас. Я попытался сделать их как можно более универсальными.

Надеюсь, это сэкономит время!

Ответ 3

И виновником было (барабаны): инфраструктура Instabug. Они говорят вам прямо на своих страницах, что позволяют пользователи берут звуковые заметки во время составления обратной связи. Поэтому я добавил NSMicrophoneUsageDescription в приложение объясняя это.

Обратите внимание, что существует много API-интерфейса Apple, в котором instabug использует

Undefined символы для архитектуры arm64: (я удалил некоторые из них, которые кажутся законными в соответствии с тем, что утверждает эта структура, и оставили то, на что я не вижу претензий в marketware)

"_ AVMakeRectWithAspectRatioInsideRect", на который ссылаются: + [IBGIAMImageAttachmentView sizeForContent: forWidth:] в InstabugHost_lto.o

"_ OBJC_CLASS _ $_ CTTelephonyNetworkInfo", на который ссылаются: objc-class-ref в InstabugHost_lto.o

"_ AVNumberOfChannelsKey", на который ссылаются: - [Начальная запись IBGVoiceNoteManager] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyHSDPA", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyGPRS", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyWCDMA", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyEdge", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyCDMA1x", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyCDMAEVDORevA", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyCDMAEVDORevB", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyLTE", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ OBJC_CLASS _ $_ AVURLAsset", на который ссылаются: _OBJC_CLASS _ $_ IBGAsset в InstabugHost_lto.o

"_ OBJC_METACLASS _ $_ AVURLAsset", на который ссылаются: _OBJC_METACLASS _ $_ IBGAsset в InstabugHost_lto.o

"_ CTRadioAccessTechnologyCDMAEVDORev0", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

"_ CTRadioAccessTechnologyHSUPA", на который ссылаются: + [IBGInspector getCarrier] в InstabugHost_lto.o

ld: символ (ы), не найденный для архитектуры arm64

Итак, в этом пост-снежном мире мне нужно задаться вопросом, зачем ему нужна коретелефония, например.

Так что я получаю, так это то, что если у вас нет источника, вы должны раскрыть пользователю, что ваше приложение сам НЕ использует микрофон или камеру, чтобы пользователь имеет возможность запретить доступ к этому устройству.

Ты не хочешь быть в новостях когда-нибудь из-за какого-то недостатка в безопасности эксплуатируется через ваше приложение.

Неразрешенный: описание использования микрофона с тщательно продуманным дизайном не позволяет полностью решить проблему с безопасностью, хотя в случае, если ваше приложение использует микрофон и стороннюю структуру (думаю, что это так) тоже нуждается в этом.

Здесь, где раскрытие кредитов может пригодиться, давая пользователям представление о том, какой сторонний код вы полагаетесь. Дайте кредит, где он должен: ^)

Если вы ленитесь, например, я и никогда не читайте статью о безопасности ios здесь короткий https://developer.apple.com/videos/play/wwdc2016/705/

Если вы на самом деле ленивы в 19:00, оратор говорит вам что вы не должны лениться об этих описаниях.

Ответ 4

Instabug использует NSMicrophoneUsageDescription, чтобы позволить вашим пользователям записывать голосовую заметку об ошибке или обратной связи с вами.

Ответ 5

Приложения iOS требуют от пользователя предоставления разрешения перед доступом к микрофону. Попытка доступа к нему без разрешения пользователя приведет к сбою приложения.

Чтобы запросить разрешение пользователя, нам просто нужно добавить NSMicrophoneUsageDescription в файл info.plist и указать значение для этого ключа. Значение может представлять собой любую строку, в которой приложения должны получить доступ к микрофону.

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

Ответ 6

Просто наличие AVAudioSession.sharedInstance().requestRecordPermission() где-то в вашей базе кода достаточно, чтобы вызвать эту ошибку с помощью iTunes Connect. Это даже не нужно активно вызывать этот код!

Ответ 7

Причина заключается в отсутствии фреймворков в Linked FrameWorks и библиотеках, таких как avkit и avfoundation