シンプルなオーディオファイルを再生しようとしています。これがシナリオです。アプリが開始され、viewdidLoadでオーディオを「再生する準備」をします。バックグラウンドに入ると、少しの間音楽を再生する必要がありますが、アンビエント カテゴリでは再生されませんが、正常にAVAudioSessionCategoryPlayback
動作します。ユーザーが必要に応じてサウンドをミュートできるように、アンビエント カテゴリにする必要があります。
-(void) startRing
{
{
OSStatus error;
UInt32 value;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];
value = kAudioSessionOverrideAudioRoute_Speaker;
error = AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(value), &value);
if (error)
NSLog(@"couldn't set kAudioSessionOverrideAudioRoute_Speaker!");
[ringTonePlayer play];
NSLog(@"ringing %s",[ringTonePlayer isPlaying]?"true":"false");//this always shows false when im in the background
self->ringing = true;
}
}
私の情報リストでは、このアプリがバックグラウンドモードとしてバックグラウンドでオーディオを使用していると書いています。問題は、バックグラウンドでオーディオを開始する必要があることですが、システムがアンビエント モードに入れません。