2012-02-25 12 views
5

Tengo problemas para reproducir una transmisión de audio cuando la aplicación entra en segundo plano.MPMoviePlayerController reproduciendo la transmisión de audio en segundo plano

uso el código para iniciar la corriente:

NSURL *mediaURL = [NSURL URLWithString:@"http://url.to.my.stream"]; 

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:mediaURL]; 

[[NSNotificationCenter defaultCenter] addObserver:self 

             selector:@selector(moviePlayBackDidFinish:) 

              name:MPMoviePlayerPlaybackDidFinishNotification 

              object:nil]; 



[mp setControlStyle:MPMovieControlStyleFullscreen]; 

[mp setMovieSourceType:MPMovieSourceTypeStreaming]; 

[mp setFullscreen:YES]; 



[self.view addSubview:[mp view]]; 



[mp prepareToPlay]; 

[mp play]; 

Funciona perfecto. Pero aunque configuré la bandera "La aplicación reproduce audio" en la lista de propiedades cuando la aplicación ingresa en segundo plano, la transmisión deja de reproducirse.

¿Cómo hago que mi aplicación reproduzca la transmisión de audio en segundo plano?

¡Un cordial saludo y muchas gracias por su ayuda!

Respuesta

9

yo no probado a mí mismo, pero esto parece prometedor: iOS Multitasking: Background Audio

Una vez que el proyecto ha sido creado ir a APP-Info.plist y añadir UIBackgroundModes como una nueva fila. Entonces debería crear la matriz.

Abra la matriz y a la derecha del elemento 0 establézcala en audio.

EDITAR

Está preparada su AVAudioSession correctamente?

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil]; 
[audioSession setActive:YES error:nil]; 
+1

sí lo hice, pero que no funcionó. En este tutorial, el tipo está utilizando AVAudio Framework. Estoy usando Media Player porque el AV Framework no reproduce mi transmisión de audio por alguna razón ... – MrBr

+0

Eche un vistazo a mi edición. – dom

+1

Gracias hombre !! Eso hizo el truco :-) – MrBr

0

Este código trabajado para mí, primero hay que dar a sus permisos de la aplicación para mantener la reproducción de música en segundo plano (En sus .plis), después de que vaya a la clase deseado y ejecutar este código, primero las importaciones y el método para reproducir la música.

#import <MediaPlayer/MPNowPlayingInfoCenter.h> 
#import <MediaPlayer/MPMediaItem.h> 
#import <AVFoundation/AVFoundation.h> 

---- ---- O

-(void) playMusic{ 

    [[AVAudioSession sharedInstance] setDelegate: self]; 

    NSError *myErr; 

    // Initialize the AVAudioSession here. 
    if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&myErr]) { 
     // Handle the error here. 
     NSLog(@"Audio Session error %@, %@", myErr, [myErr userInfo]); 
    }else{ 
     // Since there were no errors initializing the session, we'll allow  begin receiving remote control events 
     [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    } 

    //initialize our audio player 
    audioPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://www.cocoanetics.com/files/Cocoanetics_031.mp3"]]; 

    [audioPlayer setShouldAutoplay:NO]; 
    [audioPlayer setControlStyle: MPMovieControlStyleEmbedded]; 
    audioPlayer.view.hidden = YES; 

    [audioPlayer prepareToPlay]; 

    [audioPlayer play]; 
}//end playmusic 
+0

Sería útil si proporcionara una explicación con su código. Destaque qué es diferente y cómo lo hizo funcionar. Las respuestas de solo código están mal vistas. –

Cuestiones relacionadas