Ответ 1
Оказывается, мой вопрос был ошибочным. Трудно получить достоверную информацию, когда вы не можете самостоятельно тестировать устройство.
На iPhone 7 и новее стереоканалы фактически направляются к отдельным громкоговорителям, хотя стереофонического разделения нет. Левый канал направляется на нижний громкоговоритель, а правый канал направляется к верхнему/гарнитурному динамику. Использование атрибута pan также может выполнить одно и то же.
Наконец, есть еще один вариант с назначением каналов. Используя AVAudioSession.sharedInstance.currentRoute.outputs
, два динамика в совокупности отображаются как один выход (outputs[0]
). Внутри этого выхода находятся два канала, outputs[0].channels[0]
и outputs[0].channels[1]
. Сопоставление с любым из них с назначением каналов также работает, при этом первое отображение канала на нижний громкоговоритель, а второе - сверху.
Любой из этих методов отлично подходит для маршрутизации звука на новые стереодинамики, даже если телефон находится в портретной ориентации.
Для тех, кто хочет попробовать на своем собственном устройстве, я собрал тестовое приложение, которое проверяет различные подходы https://github.com/brian-armstrong/speaker-tester