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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 后台播放音频?

耳机线控启动APP时如何查看iOS APP【音乐播放应用】是不是在后台

如何在 iOS 4 中在后台播放多个音频文件?

如何在应用程序处于后台模式时在 iOS 10 中播放自定义音频

在 SwiftUI 中播放音频时无法更新行颜色

IOS如何在后台播放音乐声音并暂停当前播放的音乐应用程序