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