RequestRecordPermission ничего не делает

С момента обновления iOS 7 произошли некоторые изменения в приложениях для записи. У меня есть приложение, которое использовалось для работы с iOS 5 и 6, но когда я попытался запустить его на iOS 7, запись не ответила.

Я проверил Интернет и увидел там новый метод, который нужно вызвать. Я попытался поместить этот код в viewDidAppear:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)])
    {
        [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
            NSLog(@"permission : %d", granted);
        }];
    }
}

'given' всегда 1, хотя я не предоставлял никаких разрешений и не видел всплывающее окно запроса.

Btw Я пытаюсь справиться с этим, используя xcode 4.6.3. Я сделал категорию для AVAudioSession с методом requestRecordPermission, так как этот метод доступен только в iOS 7.

Спасибо.

Ответ 1

Я столкнулся с той же проблемой при тестировании на симуляторе iOS7, похоже, что requestRecordPermission не работает в симуляторе, и "предоставленный" всегда возвращается YES. Вы должны протестировать его на реальном устройстве.

Если вы протестировали его один раз на устройстве и ответили на всплывающее окно разрешения, всплывающее окно разрешения не появится снова, пока не будет reset местоположения и конфиденциальности.

В reset Местоположение и конфиденциальность выполните следующие действия

Go to Settings -> General -> Reset -> Reset Location & Privacy and then press "Reset Warnings" when asked.

Ответ 2

После того, как вы предоставили разрешение на аудио для приложения. В вашем приложении снова не появится запрос на подтверждение.

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

Ответ 3

для iOS 8 Simulator. AVAudioSession.sharedInstance().requestRecordPermission всегда возвращает true. С другой стороны, когда вы вызываете

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 

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

Ответ 4

Добавить конфиденциальность - использование микрофона Описание в вашем информационном plist, чтобы предоставить доступ для приложения, чтобы запросить разрешения. Это вызвало ошибку Thread13: сигнал SIGABRT. После этого ошибка будет решена автоматически.