Разработка приложения для iOS, которое воспроизводит аудиосообщения в сегментах (не непрерывное воспроизведение). Когда приложение открыто, я инициализирую аудио сеанс со следующими параметрами.
func _initAudioSesh() {
let audioSession = AVAudioSession.sharedInstance()
do {
if #available(iOS 10.0, *) {
try audioSession.setCategory(
AVAudioSessionCategoryPlayAndRecord,
mode: AVAudioSessionModeVoiceChat,
options: [
AVAudioSessionCategoryOptions.defaultToSpeaker,
AVAudioSessionCategoryOptions.allowBluetooth,
AVAudioSessionCategoryOptions.allowBluetoothA2DP
]
)
} else {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
}
} catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
}
Затем, когда я готов к воспроизведению звука, я беру фокус с помощью setActive (true) и снимаю фокус с помощью setActive (false)
Проблема, с которой я сталкиваюсь, заключается в том, что в приложении аппаратные кнопки громкости работают только во время воспроизведения звука, в противном случае кнопки ничего не делают. Я смог взломать это, ВСЕГДА держа setActive (true), но этот хак некрасив и вызывает другие проблемы. Кто-нибудь еще испытывал, что кнопки громкости не работают / не настраиваются в приложении, а работают только при активном воспроизведении звука?
Как только я выхожу из приложения, настройка звука работает, как только я возвращаю его в фокус, он перестает работать, если я не начинаю воспроизводить звук.
Я пытался возиться с тем, как и когда я создаю аудио сеанс, но безуспешно.