MPMoviePlayerController playing audio stream in the background

后端 未结 2 1229
不思量自难忘°
不思量自难忘° 2021-01-03 03:55

I am running into trouble with playing an audio stream when the application enters background.

I use the code to start the stream:

NSURL *mediaURL =          


        
相关标签:
2条回答
  • 2021-01-03 04:50

    This code worked for me, first you must to give your app permissions to keep playing music in the background (In your .plis), after that go to the wished class and implement this code, first the imports and the the method to play the music.

    #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 讨论(0)
  • 2021-01-03 04:56

    I didn't tried it myself but this looks promising: iOS Multitasking: Background Audio

    Once the project has been created go to APP-Info.plist and add UIBackgroundModes as a new row. It should then create the array.

    Open the array and to the right of Item 0 set it to audio.

    EDIT

    Is your AVAudioSession set up properly?

    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
    [audioSession setActive:YES error:nil];
    
    0 讨论(0)
提交回复
热议问题