因此,在用户授予(或拒绝)使用麦克风的权限后,我需要调用某些功能。

我已经看到了:

[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
        if (granted) {
            // Microphone enabled code
            [self someFunction];

        }
        else {
            // Microphone disabled code
        }
 }];

但是,这仅适用于检测当前状态。

如果当前状态为“否”,并显示弹出窗口,并且用户授予了权限-该函数将不会被调用。这是因为在执行此操作时,权限为“no”,并且在下次运行代码之前,该函数将不会被调用。

我想做的是在用户按下“允许”或“拒绝”之后调用一个函数。

有人知道该怎么做吗?

编辑:
忘了提到它必须是iOS 7.0向上兼容的解决方案。

最佳答案

iOS 8中引入的 AVAudioSession 方法是 recordPermission 。这将返回一个名为 AVAudioSessionRecordPermission 的枚举。您可以使用开关来确定是否已向用户显示权限警报。这样,您仅在未向用户显示 requestRecordPermission 时才调用它,因此,权限块可以假定它是在用户首次允许或不允许使用权限后才执行的。

例如:

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

关于ios - 如何检测在iOS上授予麦克风权限的用户?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33065150/

10-14 18:54
查看更多