Как обнаружить разрешение на вход микрофона, отклоненное в iOS 7

Я хотел бы узнать, когда пользователь отказался от разрешения микрофона на моем приложении iOS. Я получаю это значение только при попытке записать микрофон: -120.000000 дБ

Но прежде, чем это сделать, мне нужно настроить AVAudioSession. Есть ли еще одна функция?

И я получил это сообщение на выходе: Microphone input permission refused - will record only silence

Благодарю.

Если вы все еще компилируете iOS SDK 6.0 (как и я), вы должны быть немного более косвенными, чем @Luis E. Prado, поскольку метод requestRecordPermission не существует.

Вот как я это сделал. Удалите бит автосохранения, если вы используете ARC. На iOS6 ничего не происходит, и на iOS7 либо регистрируется сообщение «микрофон», либо появляется предупреждение.

 AVAudioSession *session = [AVAudioSession sharedInstance]; if ([session respondsToSelector:@selector(requestRecordPermission:)]) { [session performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) { if (granted) { // Microphone enabled code NSLog(@"Microphone is enabled.."); } else { // Microphone disabled code NSLog(@"Microphone is disabled.."); // We're in a background thread here, so jump to main thread to do UI work. dispatch_async(dispatch_get_main_queue(), ^{ [[[[UIAlertView alloc] initWithTitle:@"Microphone Access Denied" message:@"This app requires access to your device's Microphone.\n\nPlease enable Microphone access for this app in Settings / Privacy / Microphone" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil] autorelease] show]; }); } }]; } 

EDIT : Оказывается, блок withObject выполняется в фоновом streamе, поэтому НЕ выполняйте какой-либо пользовательский интерфейс там, или ваше приложение может висеть. Я скорректировал код выше. Клиент указал на то, что было к счастью бета-версией. Извиняюсь за ошибку.

Обратите внимание, что это будет работать только при построении с Xcode 5, а не с 4.6

Добавьте AVFoundation Framework в свой проект

Затем импортируйте файл заголовка AVAudioSession из структуры AVFoundation, где вы хотите проверить, включена ли настройка микрофона

 #import  

Затем просто вызовите этот метод

 [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { if (granted) { // Microphone enabled code } else { // Microphone disabled code } }]; 

В первый раз, когда этот метод запускается, он отобразит приглашение, чтобы разрешить доступ к микрофонам и на основании ответа пользователей он выполнит блок завершения. Со второго раза он будет действовать только на основе сохраненной настройки на устройстве.

Я не уверен на 100%, если нам разрешено говорить о iOS 7 за пределами devforums от Apple, но я нашел ответ, который вы ищете там .

Короче говоря, вы найдете свое решение в файле заголовка AVAudioSession.h в SDK. И если вы хотите использовать его, поддерживая при этом поддержку iOS 6, обязательно используйте « respondsToSelector: », чтобы проверить наличие API.

Быстрый ответ:

 if AVAudioSession.sharedInstance().recordPermission() == .Denied { print("Microphone permission refused"); } 

Или вы можете использовать инфраструктуру, такую ​​как PermissionScope, которая позволяет легко проверять разрешения. https://github.com/nickoneill/PermissionScope

Изменить: Swift 3 ответ:

 import AVFoundation ... if AVAudioSession.sharedInstance().recordPermission() == .denied { print("Microphone permission refused"); } 
  • Проблема автосохранения кадра UICollectionViewCell contentView в ячейке прототипа Storyboard (Xcode 6, iOS 8 SDK) происходит при запуске только на iOS 7
  • Прокрутка Не работает IOS 7
  • UITableView начинается со смещения в iOS 7
  • Как изменить цвет текста и значков для tabBarItems в iOS 7?
  • Черные полосы появляются в приложении при настройке iOS7.1 или 7.0 в Xcode6
  • Получать глобальный цвет оттенка из кода
  • Множественный выбор в Safari iOS 7
  • UICollectionView не повторно использует ячейки
  • Приложение ссылается на непубличные селекторы в Payload / .app / : декодер
  • Установка изображения UIButton приводит к синей кнопке в iOS 7
  • Изменение цвета текста UISearchBar в iOS 7
  • Interesting Posts

    Nexus 7 не отображается через USB через «устройства adb» из Windows 7 x64

    Как заставить SSL / https в Express.js

    Быстрое вычисление log2 для 64-битных целых чисел

    Велоспорт через свернутые окна

    Удаленный сертификат недействителен в соответствии с процедурой проверки

    Непрозрачность фона div, не затрагивая содержащийся элемент в IE 8?

    Опасны ли внутренние ЖК-мониторы?

    Как вы можете заставить Excel 2007 прекратить форматирование больших чисел в качестве научной нотации?

    Операция не может быть выполнена, так как DbContext был удален

    Эффект точки с запятой после цикла «for»

    Как создать собственный атрибут проверки для MVC

    Как удалить образ учетной записи в Windows 8?

    Как ssh к недоступной удаленной машине путем туннелирования через сервер, к которому все могут добраться?

    Что делают одиночные кавычки в C ++ при использовании нескольких символов?

    Запуск эмулятора после создания Android из источника

    Давайте будем гением компьютера.