MPMusicPlayerController在应用程序处于后台时播放音乐

时间:2014-08-03 16:01:04

标签: ios avaudioplayer mpmusicplayercontroller

希望这个问题不会被投票 - 我在文档中没有看到任何内容。

我想在应用程序位于后台时播放ipod库中的音乐。

我正在使用默认机制创建音乐播放器。

-(void)viewWillAppear:(BOOL)animated
{
    MPMusicPlayerController *myPlayer =

    [MPMusicPlayerController applicationMusicPlayer];



    // assign a playback queue containing all media items on the device

    [myPlayer setQueueWithQuery: [MPMediaQuery songsQuery]];



    // start playing from the beginning of the queue

    [myPlayer play];
}

只要应用程序进入后台,音乐就会停止播放。我希望它继续玩。

我不想使用iPodMusicPlayer 选项

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您应该在项目设置中设置背景音频模式(项目设置>功能>背景模式>音频和AirPlay),如下面的屏幕截图所示: enter image description here

此外,您应该在appDelegate中设置音频会话类别(在didFinishLaunching方法中)。示例如下所示:

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

答案 1 :(得分:0)

我有同样的问题。我在plist中加入旗帜后搜索了一下。它不起作用,因为:

  

applicationMusicPlayer不支持背景音乐。使用   MPMusicPlayerController's systemMusicPlayer 代替。它分享了   具有内置系统播放器的状态和音乐将继续播放   当您的应用进入后台时。

其他解决方案是:

您可以使用AVAudioPlayer播放流媒体或本地(捆绑)音频。它甚至允许您同时播放多个音频文件,每个文件都有AVAudioPlayer个实例。

注意: iPodMusicPlayer已弃用。所以不要使用systemMusicPlayer