Я использую AudioKit для воспроизведения звуков в своем приложении, и мне бы хотелось, чтобы звук продолжал воспроизводиться в фоновом режиме.Но когда приложение переходит в фоновый режим или когда я захожу в экран блокировки на моем iPhone, звук из приложения останавливается.
Я включил функцию фонового звука в XCode (и подтвердил, что соответствующий элемент был добавлен в Info.plist
).
Я установил категорию сеанса на .playback
, что,согласно комментариям в AKSettings.swift :
Звук не отключается с помощью бесшумного переключателя и блокировки экрана - звук не смешивается
Так что мойпонимание состоит в том, что если я установлю эту категорию и включу фоновый звук в моем 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), без подключенных наушников или другого оборудования.
- Во время этого теста другие приложения не запускаются.
Я что-то упускаю из виду?Может быть, настройка или что-то?Или я должен подать проблему на github AudioKit?