remoteControlReceivedWithEvent llamó al dispositivo iOS 7.0 pero no a iOS 8.0

Tengo una aplicación que reproduce audio en segundo plano. Estoy tratando de corregir un error donde los controles de audio (reproducción / pausa), en la pantalla de inicio (etc.), NO funcionan en iOS 8.0+ pero funcionan FINE en iOS 7.0. He estado investigando tratando de descubrir cuál es el problema y he estado vacío. Cualquier idea sería muy apreciada. Aquí está lo que tengo en su lugar.

En la configuración del proyecto: me he asegurado de queUIBackgroundModes se establece enaudio.

En AppDelegate.h: tengo un miembro para elAVAudioSession* session; así como elAVPlayer *audioPlayer;

En el AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

self.session = [AVAudioSession sharedInstance];

NSError* error = NULL;
[self.session setCategory:AVAudioSessionCategoryPlayback error:&error];
[self.session setActive:YES error:&error];

if (error) {
    NSLog(@"AVAudioSession error: %@", [error localizedDescription]);
}

En el AudioPlayerViewController.m

- (void)viewDidLoad {

//Get the Audio
NSURL *url = [NSURL URLWithString:self.audioUrl];
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];

//Setup the player
self.playerItem = [AVPlayerItem playerItemWithAsset:asset];
appDelegate.audioPlayer = [AVPlayer playerWithPlayerItem:self.playerItem];

//Setup the "Now Playing"
NSMutableDictionary *mediaInfo = [[NSMutableDictionary alloc]init];
[mediaInfo setObject:self.title forKey:MPMediaItemPropertyTitle];
[mediaInfo setObject:self.artist forKey:MPMediaItemPropertyArtist];
[mediaInfo setObject:self.album forKey:MPMediaItemPropertyAlbumTitle];
[mediaInfo setObject:[NSNumber numberWithDouble:duration ] forKey:MPMediaItemPropertyPlaybackDuration];
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:mediaInfo];

}

// Process remote control events
- (void) remoteControlReceivedWithEvent:(UIEvent *)event {

NSLog(@"AudioPlayerViewController ... remoteControlReceivedWithEvent top ....subtype: %d", event.subtype);

if (event.type == UIEventTypeRemoteControl) {

    switch (event.subtype) {
        case UIEventSubtypeRemoteControlTogglePlayPause:
            [self togglePlayPause];
            break;
        case UIEventSubtypeRemoteControlPause:
            [self doPause];
            break;
        case UIEventSubtypeRemoteControlStop:
            [self doPause];
            break;
        case UIEventSubtypeRemoteControlPlay:
            [self doPlay];
            break;
        case UIEventSubtypeRemoteControlPreviousTrack:
            [self nextOrPrevTrack];
            break;
        case UIEventSubtypeRemoteControlNextTrack:
            [self nextOrPrevTrack];
            break;
        default:
            break;
    }
}

}

-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];

}

- (BOOL) canBecomeFirstResponder {
return YES;

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta