iphone remoteevent notifications not getting called for MPMoviePlayer

406 views Asked by At

I am using MPMoviePlayer in my view controller. In viewwillappear I am doing

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

but -(void)remoteControlReceivedWithEvent:(UIEvent *)event is not getting called anytime when I clicked for next track or previous track buttons on player.

I have also included following code in viewwillappear

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];

Let me know what can be the issue? Or give me an example or some sample code where we can notify UIEventSubtypeRemoteControlNextTrack and UIEventSubtypeRemoteControlPreviousTrack events.

1

There are 1 answers

0
amergin On

in my appdelegate I have..

NSError *myErr;
NSError *activationError;
AVAudioSession *session = [AVAudioSession sharedInstance];

if( [session setCategory:AVAudioSessionCategoryPlayback error:&myErr] ) {
    if( [UIApplication instancesRespondToSelector: @selector (beginReceivingRemoteControlEvents)] ) {
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    }

    [session setDelegate: self];

    if( ![session setActive: YES error: &activationError] ) {
        NSLog(@"Audio Session error %@, %@- unable to setActive", activationError, [activationError userInfo]);
        return false;
    }
}
else    {
    NSLog(@"Audio Session error %@, %@ - unable to setCategory", myErr, [myErr userInfo]);
    return false;
}

and then in my ViewController I have..

- (BOOL) canBecomeFirstResponder {
    return YES;
}

- (void) viewDidAppear:(BOOL)animated       {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {

    if (receivedEvent.type == UIEventTypeRemoteControl) {

        switch (receivedEvent.subtype) {

            case UIEventSubtypeRemoteControlPlay:
                break;

            case UIEventSubtypeRemoteControlPause:
                break;

            case UIEventSubtypeRemoteControlStop:
                break;

            case UIEventSubtypeRemoteControlTogglePlayPause:
                break;

            case UIEventSubtypeRemoteControlNextTrack:
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                break;

            case UIEventSubtypeRemoteControlBeginSeekingBackward:
                break;

            case UIEventSubtypeRemoteControlEndSeekingBackward:
                break;

            case UIEventSubtypeRemoteControlBeginSeekingForward:
                break;

            case UIEventSubtypeRemoteControlEndSeekingForward:
                break;

            default:
                break;
        }
    }
}

hope this helps.