我正在使用Ionic和Capacitor构建一个 iOS 应用程序。我在 Capacitor 插件中使用AVFoundation,该插件提供了一种公共方法来播放可从远程 URL 访问的音频文件。基础工作,音频文件播放成功。现在我想正确处理中断和背景音频。通过背景音频,我的意思是在应用程序在后台时开始播放音频文件,而不是在之前在前台启动时继续在后台播放它。总而言之,应用程序的行为方式应如下:
- 如果另一个应用程序(例如 Spotify)正在播放音频而我的应用程序想要播放音频,则应该中断另一个应用程序,并且我的应用程序的音频应该开始播放而不会混合。
- 如果我的应用程序的音频播放完毕,其他应用程序的音频应该会继续播放。
- 我的应用程序必须能够在后台播放音频而无需混合。
- 我想在锁屏和通知中心显示播放/暂停按钮和音频标题。
我添加了背景模式音频功能。我使用AVPlayer、AVAudioSession、MPNowPlayingInfoCenter和MPRemoteCommandCenter,遵循最佳实践,尤其是关于音频会话的激活和停用以及中断处理。我跟着这个问题和这个问题。我尝试了几种解决方案,但从未成功实现上述所有目标。到目前为止,我发现如下:
- 目标 1. 以上很容易实现。只需激活音频会话而无需混合并开始播放音频。
- 在我的应用程序的音频完成后,我停用了音频会话。不幸的是,如果我不使用远程命令或通知信息,我只能实现上述目标 2。这意味着,我的应用在锁屏和通知中心都没有音频控制 UI。MPNowPlayingInfoCenter 和 MPRemoteCommandCenter 的配置似乎会影响中断行为。据我所知,Apple 文档对此没有任何说明。
- 我只有在设置选项 .mixWithOthers 时才设法开始在后台播放音频。苹果文档也没有说明这一点。
任何帮助将不胜感激。
罗尼