如何检测用户在iOS上授予麦克风权限?

前端之家收集整理的这篇文章主要介绍了如何检测用户在iOS上授予麦克风权限?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我需要在用户给出(或拒绝)使用麦克风的权限后调用某个函数.

我已经看到了这个:

  1. [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
  2. if (granted) {
  3. // Microphone enabled code
  4. [self someFunction];
  5.  
  6. }
  7. else {
  8. // Microphone disabled code
  9. }
  10. }];

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

如果当前状态为“no”并且弹出窗口显示用户提供权限 – 则不会调用函数.那是因为在执行此操作的那一刻,权限是“否”,直到我们下次运行代码时才会调用函数.

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

谁知道怎么做?

编辑:
忘了提它它必须是iOS 7.0兼容的解决方案.

解决方法

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

一个例子是 – 像 –

  1. AVAudioSessionRecordPermission permissionStatus = [[AVAudioSession sharedInstance] recordPermission];
  2.  
  3. switch (permissionStatus) {
  4. case AVAudioSessionRecordPermissionUndetermined:{
  5. [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
  6. // CALL YOUR METHOD HERE - as this assumes being called only once from user interacting with permission alert!
  7. if (granted) {
  8. // Microphone enabled code
  9. }
  10. else {
  11. // Microphone disabled code
  12. }
  13. }];
  14. break;
  15. }
  16. case AVAudioSessionRecordPermissionDenied:
  17. // direct to settings...
  18. break;
  19. case AVAudioSessionRecordPermissionGranted:
  20. // mic access ok...
  21. break;
  22. default:
  23. // this should not happen.. maybe throw an exception.
  24. break;
  25. }

猜你在找的iOS相关文章