私のアプリでは、MPMusicPlayerController を使用して .mp3 をバックグラウンド ミュージックとして再生し、AVAudioPlayer を使用して、ボタンを押すように効果音を再生します。コードは次のようになります。
// Initialization code here.
AudioSessionInitialize(NULL, NULL, NULL, NULL);
AVAudioSession *session =[AVAudioSession sharedInstance];
//The background music and the sound-effect can play simultaneously
[session setCategory: AVAudioSessionCategoryAmbient error:nil];
[session setActive: YES error: nil];
m_sharedPlayer = [[MPMusicPlayerController applicationMusicPlayer] retain];
[m_sharedPlayer setShuffleMode: MPMusicShuffleModeSongs];
[m_sharedPlayer setRepeatMode: MPMusicRepeatModeAll];
[m_sharedPlayer setVolume:0.2];
// choose the first song
[m_sharedPlayer setQueueWithQuery: [MPMediaQuery songsQuery]];
[m_sharedPlayer play];
...
//when need play sound-effect, soundfilename is a NSString
NSData *data =[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:soundfilename ofType:nil]];
AVAudioPlayer *audioplayer = [[AVAudioPlayer alloc] initWithData:data error:nil];
audioplayer =1.0;
audioplayer.delegate =self;
[audioplayer prepareToPlay];
[audioplayer play];
...
audioplayer は、再生が終了した後にリリースされます。
コードは iOS 5.0 で動作します。しかし、iOS 6.0 ではすべてが変わりました。とにかく、AVAudioPlayer はサウンドを再生しません。
この行を変更すると: [session setCategory: AVAudioSessionCategoryAmbient error:nil]; To: [セッション setCategory: AVAudioSessionCategoryPlaybackエラー: nil];
AVAudioPlayer はサウンドを再生しますが、MPMusicPlayerController の再生セッションを中断します... バックグラウンド ミュージックを中断せずに AVAudioPlayer を再生する方法を見つけるにはどうすればよいですか? どうもありがとうございました。