このトピックに関する多くの記事/投稿を読みましたが、画面がロックされている間はサウンドを再生できません。
viewDidLoad で、オーディオ セッションを初期化し、オーディオ プロパティを kAudioSessionCategory_MediaPlayback に設定します。
AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
次に、AVAudioPlayer 変数 (audioPlayer) を初期化します。
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: @"click" ofType: @"wav"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: &error];
[fileURL release];
info.plist の「必要なバックグラウンド モード」セクションに「アプリがオーディオを再生する」を追加しました。
AVAudioPlayerDelegate と AVAudioSessionDelegate をビュー コントローラーの *.h ファイルに追加しました (必要かどうかはわかりませんが)。
(非常に短い)サウンドを定期的に再生します(毎秒〜1x):
[audioPlayer play]
画面のロックを解除すると音は問題なく再生されますが、ロックすると再生が停止します。その後、画面のロックを解除すると、(キューに入れられた) サウンドが再生されます。
アイデア?ありがとう!