Как слушать нажатие гарнитуры (наушников)?

Для прослушивания нажатия гарнитуры (наушников) в приложении, разработанном на языке программирования Swift, нужно создать экземпляр класса AVAudioSession и настроить его для воспроизведения звука.

1. Импортируйте фреймворк AVFoundation в начало файла:

import AVFoundation

2. Создайте экземпляр класса AVAudioSession и установите категорию playback. Установите его как активный и установите делегата для обработки событий аудиосессии:

do {
    let audioSession = AVAudioSession.sharedInstance()
    try audioSession.setCategory(.playback)
    try audioSession.setActive(true)
    audioSession.addObserver(self, forKeyPath: "outputVolume", options: .new, context: nil)
} catch {
    print("Ошибка при настройке аудиосессии: (error.localizedDescription)")
}

3. В вашем классе реализуйте метод observeValue(forKeyPath:keyPath:of:change:context:), чтобы обнаружить изменение громкости звука:

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    guard let keyPath = keyPath,
        keyPath == "outputVolume",
        let change = change,
        let newVolume = change[.newKey] as? Float else {
            return
    }
    
    // делайте что-то, что нужно при изменении громкости звука
    print("Громкость звука изменилась: (newVolume)")
}

4. Поместите код из шагов 2 и 3 в нужные методы вашего класса (например, в метод viewDidLoad).

Теперь ваше приложение будет обнаруживать изменения громкости звука, включая нажатия на кнопки гарнитуры.

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