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.
После этого ошибка будет решена автоматически.