ios应用程序在后台使用SwiftUI时如何播放SystemSound
Posted
技术标签:
【中文标题】ios应用程序在后台使用SwiftUI时如何播放SystemSound【英文标题】:How to play a SystemSound when the ios app is in the background using SwiftUI 【发布时间】:2020-03-30 07:13:56 【问题描述】:我有以下测试代码在前台运行良好:
struct ContentView: View
let timer = Timer.TimerPublisher(interval: 1.0, tolerance: 1.0, runLoop: .main, mode: .default)
let future10 = Date().addingTimeInterval(10)
var body: some View
Text("10 beeps, 10 seconds from now")
.onReceive(self.timer) _ in
let diff = abs(Date().timeIntervalSince(self.future10))
if diff <= 5
AudioservicesPlaySystemSound(1205)
.onAppear(perform: self.timer.connect())
我已将目标应用设置为“背景模式”->“音频、Airplay 和画中画”
但我在关闭应用程序后听不到声音。计时器似乎一直在走,但没有声音。
【问题讨论】:
【参考方案1】:如果您终止您的应用程序,它会从内存中删除,因此无法执行其代码。
苹果的文档指出:
启用此功能后,您的应用的音频可以在用户访问时继续播放 切换到另一个应用程序或当他们锁定他们的 iOS 设备时。
https://developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/creating_a_basic_video_player_ios_and_tvos/enabling_background_audio
他们明确没有提到应用程序可以在应用程序从内存中删除时播放声音。
【讨论】:
也许我在这里用了错误的词(解雇)来描述我在做什么。我“滑动”我的测试应用程序,手指快速向上运动。我相信这会将我的测试应用程序置于后台,而不是从内存中删除。这是我知道的切换到另一个应用程序的唯一方法。以上是关于ios应用程序在后台使用SwiftUI时如何播放SystemSound的主要内容,如果未能解决你的问题,请参考以下文章
耳机线控启动APP时如何查看iOS APP【音乐播放应用】是不是在后台