【问题标题】:Background audio stops despite background audio capability and session category尽管背景音频功能和会话类别,但背景音频停止
【发布时间】: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 上提出问题?

【问题讨论】:

    标签: ios swift audiokit


    【解决方案1】:

    好的,我找到了解决方案,所以我会在这里发布,以防有​​人也遇到这种情况。

    答案在this github issue

    基本上,如果您想使用.playback 作为您需要包含的类别:

    AKSettings.playbackWhileMuted = true
    

    默认为false。查看AKSettings.swift:267 看起来playbackWhileMuted 在获取计算的会话类别时使用。因此请注意,您使用 AKSettings.setSession 设置的值可能不是“计算”值,除非您记得设置适当的标志。

    更新

    我也刚刚尝试删除此行:

    try? AKSettings.setSession(category: .playback)
    

    没有它也能正常工作。所以看起来简单地设置playbackWhileMuted 就足够了。我想我可能误解了何时使用setSession

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多