随着 iOS 7 的推出,应用程序在想要录制音频时必须请求麦克风访问权限。
如何检查应用程序是否可以访问麦克风?
在 iOS 8 SDK 中,我可以使用 AVAudioSessionRecordPermission
枚举,但如何在 iOS 7 中检查它?
信息:
我不想请求权限,我只是想检查应用程序是否可以访问麦克风。 (如位置访问):
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
// Do something
}
最佳答案
您可以使用 recordPermission() 查看,从 iOS 8 开始可用。
请记住,从 iOS 10 开始,您必须在 info.plist
中设置 NSMicrophoneUsageDescription
属性以获得麦克风权限,并包含一个给用户的消息。此消息在请求时显示给用户。最后,如果本地化您的应用,请务必包含您的 plist 字符串以供翻译。
否则会在尝试访问麦克风时导致崩溃。
此答案已针对 Swift 5.x 再次清理
import AVFoundation
switch AVAudioSession.sharedInstance().recordPermission {
case .granted:
print("Permission granted")
case .denied:
print("Permission denied")
case .undetermined:
print("Request permission here")
AVAudioSession.sharedInstance().requestRecordPermission({ granted in
// Handle granted
})
@unknown default:
print("Unknown case")
}
objective-C
我已经用 iOS 8 测试了这段代码,目的是检查麦克风权限和获取当前状态。
switch ([[AVAudioSession sharedInstance] recordPermission]) {
case AVAudioSessionRecordPermissionGranted:
break;
case AVAudioSessionRecordPermissionDenied:
break;
case AVAudioSessionRecordPermissionUndetermined:
// This is the initial state before a user has made any choice
// You can use this spot to request permission here if you want
break;
default:
break;
}
一如既往,确保导入 AVFoundation
。
关于iOS检查应用程序是否可以访问麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981333/