Question

Here is my code:

-(void) recordButton{

    [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
    NSLog(@"value of the grant is :: %hhd", granted);
    if (granted)
    {
          // perform operation recording
          // perfrom some operation on UI(changing labels and all)
    }
    else
    {
      // do operation
    }

   }];

}

Problem is, when i run my app for the first time , after reset in the privacy and my app calls the above defined method, it creates trouble.

when My app run for the first time, allow/disallow microphones messgae(OS defined) method pops up. when i click allow it displays the boolean(granted correclty). Goes inside IF correctly. Starts the recording correctly. but the UI freezes. and the second part of IF i.e changing label names, doesnt execute till , a timer (added by me stops the method and recording) executes.

PLease help. I can sense that my 2nd part of the IF(changing UI label are not working in foreground), i.e. background work is working perfectly. Please Help, I am not expert. started iOS programing 2 months back.

Was it helpful?

Solution

I got the answer. my problem was, that when program reached If(granted) , it was performing the recording function but didn't performed on UI(changing labels and all).

The problem was, that the whole code was treated as a separate thread and was performed in background. That's why recording was working properly(as it was a background process).
But UI(changing the labels) was a foreground task.

So For that, I had to execute the UI CODE under a thread that was on MAIN queue. And now it works perfectly.

OTHER TIPS

AVAudioSession's requestRecordPermission callback is a background thread. Using code on the main thread inside a background thread causes issues (and most likely a crash).

You should call a method on the main thread to execute any post granted code. Using performSelectorOnMainThread: is an excellent way to make sure your code is running on the main thread (as explained here: execution on main thread).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top