39 votes

Lecture de musique en arrière-plan à l'aide d'AVAudioplayer

Je veux jouer de la musique même si l'application passe en arrière-plan. J'ai vérifié tous les liens stackoverflow mais aucun d'eux n'a fonctionné. Veuillez aider à le faire aujourd'hui.

J'avais utilisé le code suivant: -

 NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Day At The Beach"  ofType: @"mp3"];

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];

NSError *error;
playerTemp = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
playerTemp.numberOfLoops = 0;
AudioSessionSetActive(true);
[playerTemp play];
 

83voto

iOS developer Points 8658

J'avais résolu cette question en référant les tâches d'arrière-plan de l'application iOS

et faire quelques changements dans le fichier .plist de notre application ..

Mise à jour

écrire ce code dans la vue de votre contrôleur a fait une méthode de chargement comme celle-ci

 - (void)viewDidLoad
{
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"in-the-storm" ofType:@"mp3"]];
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [audioPlayer play];
    [super viewDidLoad];
}
 

32voto

conarch Points 395

Je voulais juste ajouter une remarque à Mehul de réponse. Cette ligne:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

est en fait très important. J'ai utilisé d'autres tutoriels pour obtenir mon AVAudioPlayer et en cours d'exécution. Tout a bien fonctionné sauf mon audio ne démarre pas si l'application est en arrière-plan. Pour préciser, mon audio est très bien si elle était déjà en train de jouer lorsque l'application est allé dans le fond...mais il ne serait pas démarrer si l'application est déjà en arrière-plan.

En ajoutant la ligne de code fait-il si mon audio serait de commencer, même si l'application est en arrière-plan.

6voto

Alastair Stuart Points 2619

Vous devez définir «audio» comme l'un de vos UIBackgroundModes dans Info.plist. Apple a une documentation sur le problème .

5voto

sankalp Points 189

Écrivez cette ligne pour plist pour l'exécution en arrière-plan ...

   <key>UIBackgroundModes</key>
        <array>
                <string>audio</string>
        </array>
 

Écrivez ce code Où vous voulez utiliser

  AVAudioPlayer*  audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:self.urlForConevW error:&error];
     audioPlayer.delegate = self;
     [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
     [[AVAudioSession sharedInstance] setActive: YES error: nil];
     [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
      audioPlayer.numberOfLoops =  1;

     [audioPlayer play];
 

3voto

viggio24 Points 8077

Vous pouvez même utiliser MPMoviePlayerController pour lire des films audio en solo. Si vous l'aimez, lisez ce Q&A technique détaillé de la bibliothèque Apple:

Questions et réponses techniques sur la bibliothèque pour développeurs iOS QA1668

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X