У меня проблемы с динамиком, использующим iOS ReplayKit Broadcast Extension для записи всего пользовательского интерфейса системы.
Слова Apple: Динамик = громкоговоритель, Приемник = удержание телефонана ухо.
В соответствии со стандартом Apple, вы объявляете свое аудио сеанс, используя AVAudioSession
.В нашем случае мы делаем видеочат, в котором по умолчанию используется громкая связь, когда гарнитура отсутствует (например, поддержка сеанса записи всего пользовательского интерфейса во время чата).
Если мы не задаем категорию с помощью defaultToSpeaker
,по умолчанию используется приемник.
AVAudioSession.sharedInstance().setCategory(
.playAndRecord,
mode: .videoChat,
policy: .default,
options: [.defaultToSpeaker, .mixWithOthers]
Но когда я это делаю, гарнитуры Bluetooth перестают работать.Если я начну использовать динамик, а затем подключу свои AirPods, Broadcast Extension продолжит использовать динамик.(Проводные гарнитуры всегда работают)
Если я этого не сделаю setCategory
, идет сеанс по умолчанию, но по умолчанию используется только приемник.
Похоже, это ошибка Apple.Фактически это означает, что мы должны выбрать либо поддержку Bluetooth-гарнитур , либо , чтобы иметь динамик при отключении гарнитуры.
Я пытался вручную использовать AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
, но этот вызов, похоже, ничего не делаетв контексте Broadcast Extension.
Кто-нибудь нашел обходной путь для этого?
Редактировать: Ошибка файла с яблоком: FB6485225 (openradar пока не может обработать помощник по обратной связи)