2013-04-15 30 views
2

我有这个奇怪的问题。当我使用MpMoviePlayerController,如果我得到任何提醒警报我选择关闭播放任何视频,然后我的应用程序与日志崩溃:MpMovieplayer在提醒警报弹出期间崩溃

“的AVPlayerItem不能与一个以上的实例关联 AVPlayer“。

我只使用MpPlayerController的一个实例。

我在这个问题上搜索了一下,发现这可以避免,如果我设置属性useApplicationAudioSession = NOMpMoviePlayerController,那么我没有任何崩溃。 但是,这个属性是已弃用后IOS6和苹果不建议使用此属性。

回答

1

我猜想问题是您的音频会话正在被警报消息的音频ping中断。尝试使用共享实例来获取音频会话。然后设置通知侦听器来正确处理中断。见苹果的指导方针这里Handle Audio Interruptions

NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:  &setCategoryError]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interruptionHandler:) name:AVAudioSessionInterruptionNotification object:nil]; 
+0

zimmryan,我查过了。 beginInterruption:和endInterruption:AVAudioSessionDelegate的方法仅在闹钟中断时触发,而不在日历提醒警报中触发。奇怪的是,这些委托方法没有触发提醒:(:(:( –

+0

似乎代理和中断回调也被弃用,你应该听通知AVAudioSessionInterruptionOption和AVAudioSessionInterruptionOptionShouldResume – zimmryan

+0

我已经设法通过暂停播放器以编程方式,当...应用程序即将退出活动状态,并在应用程序到达前台播放视频时。触发闹钟 –

1

我想你想要的是:AVAudioSessionCategoryAmbient

查看所有“Audio Session Categories”的描述。作为描述

NSError *setCategoryError = nil; 
BOOL success = [[AVAudioSession sharedInstance] 
       setCategory: AVAudioSessionCategoryAmbient 
       error: &setCategoryError]; 

Setting the Category

这应该为你工作。

+0

Vin,我尝试了在AVAudioSession.h中声明的所有这三个属性(仍然没有运气): AVAudioSessionCategoryAmbient; ,AVAudioSessionCategorySoloAmbient; ,AVAudioSessionCategoryPlayback; –

+0

@KiranKulkarni:你能告诉我你的代码吗? – Bhavin