iOS 只能在播放时调整音量

iOS Volume only adjustable on Playback

开发一个 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) 来绕过这个问题,但是这种破解很丑陋并且会导致其他问题。有没有其他人体验过音量按钮不是 working/adjusting 应用内的,并且只有在音频正在播放时才有效?

我一离开应用程序,音频调整就开始工作,一回到焦点,它就停止工作,除非我开始播放音频。 我试过弄乱创建音频会话的方式和时间,但没有成功。

这最终是我们正在使用的特定库 (react-native-system-settings) 的结果,该库现已修补。如果其他用户遇到问题,修复似乎是允许 UI 在 VolumeView 中显示。否则,它不允许硬件按钮影响音量。