【发布时间】:2021-06-22 05:56:43
【问题描述】:
我有一个可观察对象,它为我的应用程序提供功能,让我可以在需要时(重复)播放相同的铃声。
问题是它在 iPhone 处于静音状态时播放,我无法停止它。我尽可能多地在 Google 上搜索,发现人们建议将音频类别设置为“环境”,但是,这似乎仍然无法解决我的问题。
这是我的 Chime 课程:
class Chime: ObservableObject {
let chimeSoundUrl = URL(fileURLWithPath: Bundle.main.path(forResource: "chime.wav", ofType: nil)!)
private var audioPlayer: AVAudioPlayer?
init() {
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.ambient, options: .duckOthers)
try audioSession.setActive(true)
} catch {
print("Failed to activate audio session: \(error.localizedDescription)")
}
do {
audioPlayer = try AVAudioPlayer(contentsOf: chimeSoundUrl)
audioPlayer?.prepareToPlay()
audioPlayer?.volume = 1.0
} catch {
print("Failed to prepare audio player: \(error.localizedDescription)")
}
}
func play() {
audioPlayer?.currentTime = 0
audioPlayer?.play()
}
}
我尝试在 Chime 类的 init 函数中设置音频类别,在应用程序的顶层在播放铃声的视图的 onAppear 中,以及在 Chime 类的“播放”方法中(这实际上导致应用性能问题)- 这些似乎都不起作用。
非常感谢任何帮助。谢谢
【问题讨论】:
标签: ios swift avaudioplayer avaudiosession