MPMoviePlayerController在后台播放音频流



当应用程序进入后台时,我在播放音频流时遇到了问题。

我使用代码来启动流:

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];

它工作得很完美。但是,尽管我在属性列表中设置了"应用程序播放音频"标志,但当应用程序进入后台时,流将停止播放。

如何让我的应用程序在后台播放音频流?

致以最良好的问候,非常感谢您的帮助!

我自己没有尝试过,但这看起来很有前景:iOS多任务:背景音频

创建项目后,转到APP-Info.plist并添加UIBackgroundModes作为新行。然后它应该创建数组。

打开数组,并在项0的右侧将其设置为音频。

编辑

您的AVAudioSession设置正确吗?

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

这段代码对我很有效,首先你必须给你的应用程序权限,让它在后台(在你的.plis中)继续播放音乐,然后转到所需的类并实现这段代码,首先是导入和播放音乐的方法。

#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

最新更新