该应用应在特定时间开始播放声音。为了选择我使用本地通知的特定时间。在特定时间到达并且应用程序处于前台时,声音开始,即使关闭应用程序(背景)或锁定iPhone,声音仍会继续播放。到目前为止,一切都很好。现在我要:是否已到达特定时间并且应用程序已经在后台或iPhone已锁定,它仍应开始播放声音。为此,我将Background Modes
设置为ON,但没有任何改变。我在代码中添加了mixWithOthers
,仍然没有任何反应。还有其他建议吗?
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
guard let url = Bundle.main.url(forResource: "NameOfFile", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, mode: .default, options: AVAudioSession.CategoryOptions.mixWithOthers)
try AVAudioSession.sharedInstance().setActive(true)
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
guard let player = player else { return }
player.play()
print("Start...")
} catch let error {
print(error.localizedDescription)
}
}
背景模式:Screenshot。
这个问题不是重复的。我寻求一种解决方案来在声音开始播放之前先将iPhone 已经锁定/应用处于背景时发出声音。另一个问题是要在开始之后在后台继续音频。
答案 0 :(得分:1)
您无法做您想做的事情。如果您的应用程序在后台运行且已超过3分钟,则该应用程序将被暂停并且不会获得任何CPU时间。
您可以安排本地通知。触发时,系统可以选择播放保存在您的应用程序捆绑包中的声音或系统通知声音,然后点亮屏幕并显示通知,要求用户打开您的应用程序。在用户决定接受通知之前,您不会被呼叫。