2

I have an audio app that plays background audio on iOS devices. I need to have the app have the "skip 15" buttons — a la the Apple Podcasts app and Overcast — instead of next/previous track buttons. Does anyone know where the documentation to this is, or of some examples? This is turning out to be a tricky issue to Google.

CupawnTae
  • 14,192
  • 3
  • 29
  • 60
Eric_WVGG
  • 2,957
  • 3
  • 28
  • 29
  • Best answer for iOS 7.1+ here: [Is there a public way to force MPNowPlayingInfoCenter to show podcast controls?](http://stackoverflow.com/questions/20591156/is-there-a-public-way-to-force-mpnowplayinginfocenter-to-show-podcast-controls) – CupawnTae Oct 20 '15 at 22:29

1 Answers1

6

Update: Great answer to this question for iOS 7.1 and later at https://stackoverflow.com/a/24818340/1469259.


The buttons on the lock screen trigger "remote control" events. You can handle these events and skip forward/back as you require:
- (void)viewDidAppear:(BOOL)animated {
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    if ([self canBecomeFirstResponder]) {
        [self becomeFirstResponder];
    }
}

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
     if (receivedEvent.type == UIEventTypeRemoteControl) {
        switch (receivedEvent.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:
                // add code here to play/pause audio
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                // add code here to skip back 15 seconds
                break;

            case UIEventSubtypeRemoteControlNextTrack:
                // add code here to skip forward 15 seconds
                break;

            default:
                break;
        }
    }
}

How you do the actual skipping depends on how you're playing the audio.

Documentation here https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/Remote-ControlEvents/Remote-ControlEvents.html

Potentially another way of achieving this, but not one I've used myself is MPSkipIntervalCommand https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPSkipIntervalCommand_Ref/index.html

Community
  • 1
  • 1
CupawnTae
  • 14,192
  • 3
  • 29
  • 60