iOS检查应用程序是否可以访问麦克风

标签 ios objective-c swift microphone avaudiosession

随着 iOS 7 的推出,应用程序在想要录制音频时必须请求麦克风访问权限。

如何检查应用程序是否可以访问麦克风?
在 iOS 8 SDK 中,我可以使用 AVAudioSessionRecordPermission 枚举,但如何在 iOS 7 中检查它?

信息:
我不想请求权限,我只是想检查应用程序是否可以访问麦克风。 (如位置访问):

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
    // Do something
}

最佳答案

您可以使用 recordPermission() 查看,从 iOS 8 开始可用。

请记住,从 iOS 10 开始,您必须info.plist 中设置 NSMicrophoneUsageDescription 属性以获得麦克风权限,并包含一个给用户的消息。此消息在请求时显示给用户。最后,如果本地化您的应用,请务必包含您的 plist 字符串以供翻译。

enter image description here

否则会在尝试访问麦克风时导致崩溃。

此答案已针对 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/

相关文章:

ios - HKAnchoredObjectQuery 无法在后台可靠地返回

swift 3 : Meaning of parenthesis around unwrapped optional

javascript - 如何通过节点js获取交易结果Firebase中的值(value)

ios - 如何获取本地化的 CFBundleDisplayName

ios - 是否有检测线是否接触矩形的功能

ios - 从服务器加载图像时 UITableView 滚动卡住

ios - GPUImage - 如何为 GPUImageMedianFilter 和 GPUImageGaussianBlurFilter 指定过滤器大小

ios - 保存时给出的 Realm 错误

ios - 关闭 NSOutputstream & NSInputstream

ios - UIView 动画忽略持续时间