diff --git a/Example/ViewController.m b/Example/ViewController.m index 007948c..b176016 100755 --- a/Example/ViewController.m +++ b/Example/ViewController.m @@ -79,10 +79,6 @@ - (BOOL)canBecomeFirstResponder { return YES; } -- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent { - [[GVMusicPlayerController sharedInstance] remoteControlReceivedWithEvent:receivedEvent]; -} - #pragma mark - IBActions - (IBAction)playButtonPressed { diff --git a/GVMusicPlayerController/GVMusicPlayerController.h b/GVMusicPlayerController/GVMusicPlayerController.h index f357ff4..a70f17b 100755 --- a/GVMusicPlayerController/GVMusicPlayerController.h +++ b/GVMusicPlayerController/GVMusicPlayerController.h @@ -36,7 +36,6 @@ - (void)addDelegate:(id)delegate; - (void)removeDelegate:(id)delegate; -- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent; - (void)setQueueWithItemCollection:(MPMediaItemCollection *)itemCollection; - (void)setQueueWithQuery:(MPMediaQuery *)query; diff --git a/GVMusicPlayerController/GVMusicPlayerController.m b/GVMusicPlayerController/GVMusicPlayerController.m index 0bc073a..42f4fce 100755 --- a/GVMusicPlayerController/GVMusicPlayerController.m +++ b/GVMusicPlayerController/GVMusicPlayerController.m @@ -113,6 +113,9 @@ - (instancetype)init { selector:@selector(handle_VolumeChanged:) name:MPMusicPlayerControllerVolumeDidChangeNotification object:[MPMusicPlayerController iPodMusicPlayer]]; + + // Register for Control Center events + [self registerCommandCenterEvents]; } return self; @@ -439,59 +442,43 @@ - (void)endInterruptionWithFlags:(NSUInteger)flags { self.interrupted = NO; } -#pragma mark - Other public methods - -- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent { - if (receivedEvent.type != UIEventTypeRemoteControl) { - return; - } +#pragma mark - Music Player Remote Command Center - switch (receivedEvent.subtype) { - case UIEventSubtypeRemoteControlTogglePlayPause: { - if (self.playbackState == MPMusicPlaybackStatePlaying) { - [self pause]; - } else { - [self play]; - } - break; - } - - case UIEventSubtypeRemoteControlNextTrack: - [self skipToNextItem]; - break; - - case UIEventSubtypeRemoteControlPreviousTrack: - [self skipToPreviousItem]; - break; - - case UIEventSubtypeRemoteControlPlay: - [self play]; - break; +- (void)registerCommandCenterEvents +{ + MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter]; - case UIEventSubtypeRemoteControlPause: - [self pause]; - break; + [commandCenter.playCommand addTargetWithHandler: + ^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) { + [self play]; return MPRemoteCommandHandlerStatusSuccess; + }]; - case UIEventSubtypeRemoteControlStop: - [self stop]; - break; + [commandCenter.pauseCommand addTargetWithHandler: + ^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) { + [self pause]; return MPRemoteCommandHandlerStatusSuccess; + }]; - case UIEventSubtypeRemoteControlBeginSeekingBackward: - [self beginSeekingBackward]; - break; + [commandCenter.stopCommand addTargetWithHandler: + ^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) { + [self stop]; return MPRemoteCommandHandlerStatusSuccess; + }]; - case UIEventSubtypeRemoteControlBeginSeekingForward: - [self beginSeekingForward]; - break; + [commandCenter.togglePlayPauseCommand addTargetWithHandler: + ^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) { + if (self.playbackState == MPMusicPlaybackStatePlaying) + [self pause]; else [self play]; + return MPRemoteCommandHandlerStatusSuccess; + }]; - case UIEventSubtypeRemoteControlEndSeekingBackward: - case UIEventSubtypeRemoteControlEndSeekingForward: - [self endSeeking]; - break; + [commandCenter.nextTrackCommand addTargetWithHandler: + ^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) { + [self skipToNextItem]; return MPRemoteCommandHandlerStatusSuccess; + }]; - default: - break; - } + [commandCenter.previousTrackCommand addTargetWithHandler: + ^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) { + [self skipToPreviousItem]; return MPRemoteCommandHandlerStatusSuccess; + }]; } @end