是否可以在后台播放来自应用程序的声音
Posted
技术标签:
【中文标题】是否可以在后台播放来自应用程序的声音【英文标题】:Is it possible to play a sound from an app in background 【发布时间】:2020-10-27 13:32:47 【问题描述】:我正在开发一个连接到 iBeacon 的 ios 应用程序。 如果外部参数匹配,我希望能够从手机播放声音。 我已启用“音频、Airplay 和画中画”。在后台模式中。
现在我有一个问题,它只能播放来自应用程序的声音,而:
应用在前台。 屏幕被锁定,手机没有静音。我希望它也能够播放声音,同时:
锁屏和手机静音。 后台(当应用由 iBeacon 启动时)。有什么办法可以做到吗?
我用来播放声音的功能是:
private var avPlayer: AVAudioPlayer?
// MARK: - Play Sound
internal func playSound(forResource resource: String, ofType type: String)
guard let path = Bundle.main.path(forResource: resource, ofType: type) else
print("Test: Failed getting path for \(resource)")
return
let url = URL(fileURLWithPath: path)
// Handle playing in background
let session = AVAudioSession.sharedInstance()
do
try session.setCategory(.playback, options: [.duckOthers])
try session.setActive(true, options: .notifyOthersOnDeactivation)
catch
print("Test: Failed setting category on session \(error)")
do
avPlayer = try AVAudioPlayer(contentsOf: url)
catch let error
print("Test: Failed adding url to AVAudioPlayer \(error)")
avPlayer?.play()
并称其为:
playSound(forResource: "SoundToPlay", ofType: "wav")
【问题讨论】:
您需要开启背景音频:developer.apple.com/documentation/avfoundation/… @KirilS。音频、Airplay 和画中画。在后台模式下启用。 【参考方案1】:如果您将应用设置为侦听信标区域通知,那么您可以在进入或离开某个区域时触发声音播放,即使手机已锁定和/或您的应用未运行也是如此。我不确定如果用户将手机静音是否会播放(我怀疑不会)
【讨论】:
以上是关于是否可以在后台播放来自应用程序的声音的主要内容,如果未能解决你的问题,请参考以下文章
我们可以在 iPhone 应用程序中以特定间隔在后台播放声音吗?