Регулировка громкости iOS только при воспроизведении - PullRequest
0 голосов
/ 28 августа 2018

Разработка приложения для 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), но этот хак некрасив и вызывает другие проблемы. Кто-нибудь еще испытывал, что кнопки громкости не работают / не настраиваются в приложении, а работают только при активном воспроизведении звука?

Как только я выхожу из приложения, настройка звука работает, как только я возвращаю его в фокус, он перестает работать, если я не начинаю воспроизводить звук. Я пытался возиться с тем, как и когда я создаю аудио сеанс, но безуспешно.

1 Ответ

0 голосов
/ 06 сентября 2018

Это закончилось тем, что мы стали результатом использования конкретной библиотеки (response-native-system-settings), которая была исправлена. Если другие пользователи сталкиваются с проблемами, кажется, что исправление заключается в том, чтобы пользовательский интерфейс отображался в VolumeView. В противном случае он не позволяет аппаратным кнопкам влиять на громкость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...