应用程序声音不';即使使用KaudioSession®MediaPlayback,铃声关闭时也不会发出声音

应用程序声音不';即使使用KaudioSession®MediaPlayback,铃声关闭时也不会发出声音,ios,xcode,ios5,audio,Ios,Xcode,Ios5,Audio,我正在制作一个音板应用程序,一切正常,但我有一个问题,如果铃声关闭,声音就不会播放 我试过这个: [super viewDidLoad]; [[AVAudioSession sharedInstance] setDelegate: self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: nil]; 我使用的是AVFoundation框架 播放该按钮的代码如下: - (IB

我正在制作一个音板应用程序,一切正常,但我有一个问题,如果铃声关闭,声音就不会播放

我试过这个:

[super viewDidLoad];
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: nil];
我使用的是AVFoundation框架

播放该按钮的代码如下:

- (IBAction)queChin:(id)sender {
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"chin", CFSTR ("m4a"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundID);
}
我已经搜索了这个主题,但找不到任何有效的答案。也许我错过了什么

作为替代方案,我可以向用户发出警告,说“嘿,打开你的铃声”,但我不知道如何检测手机是否静音

有什么提示吗


谢谢。

我发现,即使您使用以下方法初始化音频会话,您也无法使用AudioServicesPlaySystemSound播放系统声音:

[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: nil];
如果用户将设备静音,系统声音将保持静音

我最终使用了AVAudioPlayer,解决了这个问题

使用系统声音的旧代码:

- (IBAction)queChin:(id)sender {
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"chin", CFSTR ("m4a"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
CFRelease(soundFileURLRef);//prevents memory leak
AudioServicesPlaySystemSound(soundID);
}
使用AVAudioPlayer的新代码:

- (IBAction)queChin:(id)sender {

NSURL *url = [[NSBundle mainBundle] URLForResource:@"chin" withExtension:@"wav"];
_chingosound = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL];
_chingosound.delegate = self;
[_chingosound prepareToPlay];
[_chingosound play];
} 

您必须初始化音频会话才能在振铃器关闭的情况下播放声音。

您可能需要为此设置不同类型的音频会话(就像您的应用程序正在播放音乐一样)。以下是要使用的正确类别Apple AVAudioSessionCategoryPlayback,我将在viewDidLoad方法中初始化音频会话。即使在Apple Dev论坛上,这个话题也充满了挫折:(可能因为我使用的是AudioServicesPlaySystemSound,所以不起作用?