Не уклоняйтесь от звука для системного звука

#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)
}