无法让AVQueuePlayer
在应用程序进入后台后开始播放声音队列。从后台启动AVQueuePlayer
最基本的问题是:如何从背景中新创建的AVQueuePlayer
实例启动声音?
这是类似于navi的应用程序,需要在时间到来时播放几个合适的声音和适当的方向。和大多数的应用程序在后台工作的时间...
详情如下...
它发挥得很好,当我从活动的应用程序启动和完成播放声音后也应用去背景。
我做了什么至今:
在AppDelegate
内didFinishLaunchingWithOptions
我说:
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
// Change the default output audio route
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
应用程序启动后,我点击主页按钮,该应用程序进入后台。
当时间来到这个代码执行(应用程序仍然在后台,但请注意,我已经启用音频和AirPlay背景模式):
-(void)playTrainingFinishedSound
{
NSMutableArray *queue = [NSMutableArray array];
[queue addObject:[AVPlayerItem playerItemWithURL:[[NSBundle mainBundle] URLForResource:@"alertkoniectreningu" withExtension:@"m4a"]]];
[self initializeAudioPlayerWithQueue:queue];
[self.appDelegate.audioPlayer play];
}
-(void)initializeAudioPlayerWithQueue:(NSArray *)queue
{
self.appDelegate.audioPlayer = [[AVQueuePlayer alloc] initWithItems:queue];
self.appDelegate.audioPlayer.actionAtItemEnd = AVPlayerActionAtItemEndAdvance;
}
不幸的是这个代码不作任何声音,与应用程序在前台的情况相反。