在我的应用中,我将使用麦克风进行录制。从iOS7.0开始,要求用户在开始播放音频之前检查访问麦克风的权限。
我的应用中有一个“开始录制”按钮。这里首先检查用户的录制许可。
以下是执行此操作的代码:
if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)]) {
[[AVAudioSession sharedInstance] performSelector:@selector(requestRecordPermission:)
withObject:permissionBlock];
}
#ifndef __IPHONE_7_0
typedef void (^PermissionBlock)(BOOL granted);
#endif
PermissionBlock permissionBlock = ^(BOOL granted) {
NSLog(@"permissionBlock");
if (granted) {
[self doActualRecording];
} else {
// Warn no access to microphone
}
};
现在,我想让用户在用户启动应用时授权使用麦克风。然后,当用户选择“录制”按钮时,它会再次发出弹出消息。
位置服务会发生类似的功能。我怎样才能进行麦克风访问?
答案 0 :(得分:10)
用户拒绝为您的应用启用麦克风访问权限后,您无法再次使用权限对话框显示它们。使用保存的设置。相反,您可以提示用户进入他们的设置并进行更改。
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
NSLog(@"granted");
} else {
NSLog(@"denied");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Microphone Access Denied"
message:@"You must allow microphone access in Settings > Privacy > Microphone"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}];
答案 1 :(得分:0)
我有同样的问题。请参阅this response相关问题,包括使用AVAudioSession检查和处理权限状态的示例代码,您可以自定义该代码以提供所需的用户体验。