根据文档,即使振铃开关设置为关闭也允许播放声音的正确方法是这样的:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
然后我在整个应用程序中播放使用
完美播放的短wav文件AudioServicesPlaySystemSound(sysSound)
....直到铃声关闭然后......沉默?
无论我做什么,如果振铃器关闭,我都无法发出声音?
任何一个......拜托?
答案 0 :(得分:0)
您最后是否尝试使用 AudioSessionSetActive(YES); ?
答案 1 :(得分:0)
let player: AVAudioPlayer = try AVAudioPlayer(contentsOf: url)
player.delegate = self
player.play()
如果您还没有,您还需要在播放前激活音频会话。并设置一个支持声音的音频会话类别,同时像你已经做的那样沉默。考虑在没有播放音频时停止音频会话以延长电池寿命。
AudioServices和AVAudioPlayer之间的一个显着区别是,如果振铃器被静音,AudioServices播放将几乎立即返回,而AVAudioPlayer将在完成之前获取声音的全部长度。据我所知,检测和响应用户铃声设置的唯一方法是使用AudioServices而不是AVAudioPlayer。如果你只是想在沉默时玩,虽然这不应该是相关的。