Swift:从后台返回后使用音量按钮不起作用

Swift: Using Volume Buttons does not work after returning from Background

我需要编写一个 iOS 应用程序,通过按 iPhone 或 iPad 上的增大音量键进行倒计时。因此,我使用了这里的一些建议来使用 AVAudioSession 并观察 "outputVolume" 键。

在这里你可以找到我的代码 ViewController:

import UIKit
import MediaPlayer

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
    @IBOutlet weak var chickenLabel: UILabel!

    let audioSession = AVAudioSession.sharedInstance()
    var maxHendl:Int = 100
    var istHendl:Int = 100
    var isVolumeChanged = false

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {
        listenVolumeButton()
        removeVolumeView()
    }

    func listenVolumeButton() {
        do {
        try audioSession.setActive(true)

        }
        catch {
            print(error.localizedDescription)
        }
        audioSession.addObserver(self, forKeyPath: "outputVolume", options: .new, context: nil)
    }

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "outputVolume" {
            if isVolumeChanged == false {
            // Set Volume to 50%
            MPVolumeView().subviews.filter{NSStringFromClass([=11=].classForCoder) == "MPVolumeSlider"}.first as? UISlider)?.setValue(0.5, animated: false)
                //do some Counting
            }
        }
     }
func removeVolumeView() {
    let volumeView: MPVolumeView = MPVolumeView(frame: CGRect.zero)
    view.addSubview(volumeView)
}
 }

首次启动应用程序后一切正常。当我现在按下主页按钮并 return 返回到应用程序时,没有捕获按下音量按钮的事件,并且再次显示 MPVolumeWindow。

有人可以帮我解决这个问题吗?

问候 阿敏

当您从后台返回时,您的音频会话不再处于活动状态。您需要重新激活它。