I have an requirement that to handle headphone play/pause button events in foreground. How ever I am able to handle the same scenario in background using the below code
if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
    [self becomeFirstResponder];
    NSLog(@"Responds!");
}
Please help with an explanation or sample code if possible. I have done lots of research but no help.
You must check this criteria:
Implement this function:
- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent 
{
  if (theEvent.type == UIEventTypeRemoteControl)
  {
    switch(theEvent.subtype) {
    case UIEventSubtypeRemoteControlTogglePlayPause:
            //Insert code
            break;
        case UIEventSubtypeRemoteControlPlay:
            //Insert code
            break;
        case UIEventSubtypeRemoteControlPause:
            // Insert code
            break;
        case UIEventSubtypeRemoteControlStop:
            //Insert code.
            break;
        default:
            return;
    }
  }
}
...obviously, replace the "//insert code" with whatever functionality is relevent in your app.
3>Finally, in order for that above function to be called, insert this in your viewDidAppear event:
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    if ([self canBecomeFirstResponder]) {
        [self becomeFirstResponder];
    }
also please see this link: http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/
There is another way to implement player control from headphones.
use MPRemoteCommandCenter tooglePlayPauseCommand.
Apple documentation
[[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)];
The swift 2 version for slobodans solution:
MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop(_:)));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With