У меня работает хорошая цепочка AudioKit (AudioKit 4.5.6, IOS 12), которая поддерживает воспроизведение и запись и делает плавные переходы в фоновый режим и из него.Мне это нравится, потому что AudioKit прекрасно справляется с изменениями категории, сеанса и маршрутизации.
Последнее, что мне нужно сделать, - это научиться работать с ним, но я не смог этого сделать.Я могу заставить фоновый звук воспроизводиться, но он не пригнулся.В качестве справки, если кто-то мог бы получить пример устройства записи AudioKit (https://github.com/AudioKit/AudioKit/tree/master/Examples/iOS/Recorder) для работы с приглушением, что дало бы мне достаточно для продолжения. Для справки, вот как выглядит цепочка из этого примера (с несколькимидля ясности удалены строки):
do {
try AKSettings.setSession(category: .playAndRecord, with: .allowBluetoothA2DP)
} catch {
AKLog("Could not set session category.")
}
AKSettings.defaultToSpeaker = true
// Patching
let monoToStereo = AKStereoFieldLimiter(mic, amount: 1)
micMixer = AKMixer(monoToStereo)
micBooster = AKBooster(micMixer)
// Will set the level of microphone monitoring
micBooster.gain = 0
recorder = try? AKNodeRecorder(node: micMixer)
if let file = recorder.audioFile {
player = AKPlayer(audioFile: file)
}
moogLadder = AKMoogLadder(player)
mainMixer = AKMixer(moogLadder, micBooster)
AudioKit.output = mainMixer
Кстати, хотя Apple утверждает, что она принята, я экспериментально обнаружил, что опция .duckOthers работает только в режиме .playback (и .ambient), а не в.playAndRecord mode.