AudioSession
ミュートスイッチがオンの場合でもオーディオを許可する「再生」カテゴリに設定する必要があります。これは私がしていることですが、スイッチをオンにしても音はミュートされます。
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
AudioServicesPlaySystemSound (soundID);
編集:ちなみに、アプリはサウンドパッドです。音を鳴らすことがアプリの唯一の目的です。これについてAppleDocが言っていることは次のとおりです。
このカテゴリは、オーディオの再生が最も重要なアプリケーションに使用します。画面がロックされていて、リング/サイレントスイッチがサイレントに設定されている場合でも、オーディオは再生されます。
編集2:ミュートスイッチをオンにすると、ヘッドホンからも音が再生されません。私はユーザーが王様であることを知っています。ミュートスイッチにはその目的があることを私は知っています。それは問題ではありません。AudioSession
カテゴリをに設定しkAudioSessionCategory_MediaPlayback
ても期待した結果が得られないという事実について、私は答えを得ようとしています。
編集3:ジョナサン・ワトモフの提案に従って、私はAudioServices
kAudioServicesPropertyIsUISound
プロパティを設定しましたが、それでも運がありません。私は何かが足りないのですか?
// set the session property
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
// creates soundID
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
// Jonathan Watmough suggestion
UInt32 flag = 0;
AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(UInt32), &soundID, sizeof(UInt32), &flag);
AudioServicesPlaySystemSound (soundID);