【发布时间】:2015-01-08 16:49:33
【问题描述】:
我正在开发一个需要麦克风访问/录音的应用。到目前为止,我认为我的权限处理是有效的,但我的 TestFlight beta 测试人员无法使用麦克风功能,即使它在模拟器和 iOS7 测试设备中工作。
这是我的许可代码:
AVAudioSession *session = [AVAudioSession sharedInstance];
if ([session respondsToSelector:@selector(requestRecordPermission:)]) {
[session performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
if (granted) {
//granted
}
else {
//not granted
}
}
];
}else{
//iOS6 seems to be missing this feature -> always available
}
即使在模拟器上重置隐私和位置,我也无法重现提示,这意味着提示永远不会出现。不过,我可以在模拟器上使用麦克风,就好像获得了许可一样。
一件重要的事情是,该应用未在“隐私”下列为麦克风访问应用(显然应该如此)。
如果我打印 iOS8 标志 [AvAudioSession sharedInstance].recordPermission,它始终是 AVAudioSessionRecordPermissionUndetermined,即使在上述权限请求被授予完成后也是如此。
一小段测试代码:
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
NSLog(@"GRANTED: %i", granted);
}];
NSLog(@"RECORD PERMISSION: %i", [AVAudioSession sharedInstance].recordPermission == AVAudioSessionRecordPermissionUndetermined?1:0);
为我生成输出:"GRANTED: 1""RECORD PERMISSION: 1" 这应该是不可能的,对吧?
这使得它目前无法在 iOS8 下使用我的应用。
【问题讨论】:
标签: ios permissions ios8 microphone avaudiosession