如何检测iOS 7中拒绝的麦克风input权限

我想检测用户何时拒绝我iOS应用程序上的麦克风权限。 当我尝试录制麦克风时,我只得到这个值:-120.000000 db

但在此之前,我必须build立一个AVAudioSession。 还有另外一个function吗?

我在输出中得到这个消息: Microphone input permission refused - will record only silence

谢谢。

如果你还在用iOS SDK 6.0进行编译(因为我是),你必须比@Luis E. Prado间接一些,因为requestRecordPermission方法不存在。

这是我做的。 如果使用ARC,请删除autorelease位。 在iOS6上,没有任何事情发生,在iOS7上,“麦克风已启用”消息被logging或者popup警报。

 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]; }); } }]; } 

编辑 :事实certificate,在后台线程中执行withObject块,所以不要在那里做任何UI工作,或者您的应用程序可能会挂起。 我已经调整了上面的代码。 一位客户指出这是什么感谢testing版本。 抱歉的错误。

请注意,这只有在使用Xcode 5而不是4.6时才能工作

将AVFoundation Framework添加到您的项目

然后从AVFoundation框架中导入AVAudioSession头文件,在那里你打算检查是否启用麦克风设置

 #import <AVFoundation/AVAudioSession.h> 

然后简单地调用这个方法

 [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { if (granted) { // Microphone enabled code } else { // Microphone disabled code } }]; 

这个方法第一次运行时,会显示允许麦克风访问的提示,根据用户的响应它将执行完成块。 从第二次开始,它将根据设备上存储的设置进行操作。

如果我们允许在苹果的开发论坛之外谈论iOS 7,我不是100%确定的, 但是我在那里find了你要找的答案 。

简而言之,您可以在SDK的AVAudioSession.h头文件中find解决scheme。 如果您想在支持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"); }