所以问题是,在用户授予(或拒绝)使用麦克风的权限后,我需要调用一些函数。
我已经看到了这个:
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
// Microphone enabled code
[self someFunction];
}
else {
// Microphone disabled code
}
}];
但是,这仅适用于检测当前状态。
如果当前状态为“否”并且弹出窗口显示并且用户授予权限 - 该函数将不会被调用。这是因为在执行此操作时,权限为“否”,并且直到我们下次运行代码为止,该函数都不会被调用。
我想要做的是在用户按下“允许”或“拒绝”后调用一个函数。
有人知道该怎么做吗?
编辑:
忘了说它必须是 iOS 7.0 以上的兼容解决方案。
一种方法AVA音频会话iOS 8 中引入的是记录权限。这将返回一个名为的枚举AVAudioSessionRecordPermission。您可以使用开关来确定是否已向用户显示权限警报。这样你只需调用请求记录权限当它尚未呈现给用户时,因此权限块可以假设它正在用户第一次允许或不允许权限之后执行。
一个例子是这样的 -
AVAudioSessionRecordPermission permissionStatus = [[AVAudioSession sharedInstance] recordPermission];
switch (permissionStatus) {
case AVAudioSessionRecordPermissionUndetermined:{
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
// CALL YOUR METHOD HERE - as this assumes being called only once from user interacting with permission alert!
if (granted) {
// Microphone enabled code
}
else {
// Microphone disabled code
}
}];
break;
}
case AVAudioSessionRecordPermissionDenied:
// direct to settings...
break;
case AVAudioSessionRecordPermissionGranted:
// mic access ok...
break;
default:
// this should not happen.. maybe throw an exception.
break;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)