【发布时间】:2018-10-26 02:43:09
【问题描述】:
我正在使用 AudioKit 在我的应用程序中播放声音,我想让音频在后台继续播放。但是,当应用程序进入后台或当我进入 iPhone 上的锁定屏幕时,应用程序的音频会停止。
我已在 XCode 中启用了背景音频功能(并确认已将适当的项目添加到 Info.plist)。
我已将会话类别设置为.playback,根据AKSettings.swift 中的cmets:
静音开关和屏幕锁定不会使音频静音 - 音频不可混合
所以我的理解是,如果我在Info.plist 中设置此类别并启用背景音频,那么即使在锁定屏幕中也应该可以听到音频,但音频会变为静音(直到我解锁手机并返回应用程序)。
我已经制作了一个非常简单的示例,除了应用程序委托(当然还有 AudioKit)之外不需要其他文件:
import UIKit
import AudioKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = UIViewController()
self.window?.makeKeyAndVisible()
// The important bits:
try? AKSettings.setSession(category: .playback)
AudioKit.output = AKWhiteNoise()
try? AudioKit.start()
return true
}
}
如您所见,我所做的只是设置会话类别并播放一些白噪声。当我启动应用程序时,我可以听到很好的白噪音,只有在手机锁定或应用程序处于后台时才会静音。
还有一点值得注意:当我替换时:
try? AKSettings.setSession(category: .playback)
与:
try? AKSettings.setSession(category: .playAndRecord)
let s = AKStereoInput()
然后音频确实在后台/锁定屏幕中继续播放,但随后闪烁的红色录制系统栏出现在顶部。所以大概是因为AKStereoInput在初始化时分配了一个输入节点,所以该应用程序被保留在后台。
其他注意事项:
- 我正在设备 (iPhone 6) 上进行测试,没有插入耳机或其他硬件。
- 此测试期间没有其他应用在运行。
我是否遗漏了一些明显的东西?也许是一个设置或什么?还是我应该在 AudioKit github 上提出问题?
【问题讨论】: