#ios #swift
Вопрос:
Я пытаюсь воспроизвести звук «динь» на звуковой дорожке.
При настройке плеера у нас есть:
try AVAudioSession.sharedInstance()
.setCategory(.playback,
mode: .default,
policy: .longFormAudio,
options: [])
try AVAudioSession.sharedInstance().setActive(true)
Затем позже пользовательское действие (например, нажатие) выполняет:
AudioServicesPlaySystemSound(SystemSoundID(1407))
Это хорошо работает. Единственная проблема заключается в том, что воспроизводимая дорожка отключается для воспроизведения системного звука.
Как я могу предотвратить это?
Как ни странно, в симуляторе XCode треки воспроизводятся параллельно, и никакого уклонения не происходит.
Обновление: обновление до этого не имеет никакого эффекта:
try AVAudioSession.sharedInstance()
.setCategory(.playback,
mode: .default,
policy: .longFormAudio,
options: .mixWithOthers)
Комментарии:
1. Вам нужно установить этот
mixWithOthers
параметр при указании.playback
категории, если вы не хотите уклоняться.2. Я обновил вопрос, но добавление
mixWithOthers
, похоже, не возымело никакого эффекта. Я работаю с Xcode на реальном устройстве, и все равно происходит ныряние 🙁
Ответ №1:
пробовать
do{
try AVAudioSession.sharedInstance().setCategory(.ambient)
try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)
} catch {
print(error.localizedDescription)
}