How to detect user giving microphone permission on iOS?

后端 未结 2 368
别跟我提以往
别跟我提以往 2021-01-13 00:22

So the thing is that I need to call some function after user gives (or declines) a permission to use the microphone.

I already saw this:

[[AVAudioSes         


        
相关标签:
2条回答
  • 2021-01-13 00:47

    A method of AVAudioSession introduced in iOS 8 is recordPermission. This returns an enum named AVAudioSessionRecordPermission. You could use a switch to determine whether the permission alert has been presented to the user or not. This way you only call requestRecordPermission when it has not been presented to the user, so the permission block can assume it is being executed after the user allows or disallows permission for the first time.

    An example would be something like -

    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;
    }
    
    0 讨论(0)
  • 2021-01-13 00:57

    If use has not yet given your permission, do the following:

    1. First, show the popup dialogue
    2. Run your code in OP

    -

    if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission)]) {
        [[AVAudioSession sharedInstance] requestRecordPermission];
        // Now run your function
    }
    
    0 讨论(0)
提交回复
热议问题