Как обнаружить разрешение на вход микрофона, отклоненное в 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"); } 
  • Проблема с IOS7 (только) stdlibc ++
  • Как изменить цвет текста и значков для tabBarItems в iOS 7?
  • iOS 7: Как получить собственный номер через частный API?
  • Черные полосы появляются в приложении при настройке iOS7.1 или 7.0 в Xcode6
  • Анимированный gif не работает в наложении MKMapView с использованием MKOverlayRenderer
  • Кнопка удаления UITableViewCell закрывается
  • Проблема автосохранения кадра UICollectionViewCell contentView в ячейке прототипа Storyboard (Xcode 6, iOS 8 SDK) происходит при запуске только на iOS 7
  • UILabel и NSLinkAttributeName: ссылка не доступна для кликов
  • UITableViewCell с высотой UITextView в iOS 7?
  • iPhone пейзаж - только нет изображения запуска для iOS7 R4
  • iOS 7 iPad Safari Пейзаж innerHeight / внешний дизайн макета
  • Interesting Posts

    ViewExpiredException не выбрасывается на запрос ajax, если страница JSF защищена j_security_check

    java.lang.NoClassDefFoundError в junit

    Как заставить Excel открывать второе пустое окно при открытии файла из проводника?

    Fedora 18 сильно перегревается HP Envy 4 1002tx в оболочке Gnome

    Лучшее HashTag Regex

    Совместимость процессоров и материнских плат

    Удаление (удаление) всех данных с неисправной карты SanDisk MicroSD

    Что такое ассоциативность операторов и почему это важно?

    Имеет ли float отрицательный ноль? (-0f)

    Простой способ скопировать текст из vim в системный буфер?

    Отправка почтового вложения с помощью Java

    Windows 10 Ошибка страницы BSOD в области без подкачки (только во время торрента)

    JsonMappingException: не найдено подходящего конструктора для типа : невозможно создать экземпляр из объекта JSON

    Почему C ++ нужен оператор разрешения области?

    Где я могу получить чистый ISO обновления для Windows 10 Anniversary (Build 14393) или Creators Update (Build 15063)?

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