[swift] 헤드셋 버튼 눌러 사운드 재생하기

헤드셋의 버튼을 누르면 앱에서 사운드를 재생하는 기능을 구현해보겠습니다.

1. AVFoundation 프레임워크 추가하기

먼저, AVFoundation 프레임워크를 프로젝트에 추가해야합니다. 이 프레임워크는 음악, 사운드 및 영상 재생과 관련된 기능을 제공합니다.

프로젝트 네비게이터에서 원하는 타겟을 선택하고, “General” 탭으로 이동한 후 “Linked Frameworks and Libraries” 섹션을 찾습니다. 여기에서 ‘+’ 버튼을 클릭하고 “AVFoundation.framework”를 선택하여 추가합니다.

2. ViewController에 NotificationCenter 등록하기

사운드 재생을 위해, ViewController에 NotificationCenter를 등록해야합니다.

import AVFoundation

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 헤드셋 버튼 누르는 이벤트를 감지하는 NotificationCenter 등록
        NotificationCenter.default.addObserver(self, selector: #selector(headsetButtonPressed), name: AVAudioSession.mediaServicesWereResetNotification, object: nil)
    }
    
    @objc func headsetButtonPressed() {
        // 헤드셋 버튼이 눌렸을 때 실행할 코드를 작성합니다.
        // 여기서는 사운드를 재생하는 예시 코드를 작성하겠습니다.
        
        let soundFilePath = Bundle.main.path(forResource: "sound", ofType: "mp3")
        let soundURL = URL(fileURLWithPath: soundFilePath!)
        
        do {
            let audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
            audioPlayer.play()
        } catch {
            print("Error playing sound: \(error.localizedDescription)")
        }
    }
}

위의 코드에서는 headsetButtonPressed() 함수가 헤드셋 버튼이 눌렸을 때 실행됩니다. 여기서는 재생할 사운드 파일을 가져와 AVAudioPlayer를 사용하여 사운드를 재생하는 예시 코드를 작성하였습니다.

3. 권한 요청 처리하기

사운드를 재생하기 위해서는 오디오 세션 권한을 요청해야합니다. Info.plist 파일에 오디오 사용 권한을 요청하는 키-값 쌍을 추가해야합니다.

아래의 내용을 Info.plist에 추가하고, Privacy - Microphone Usage Description 키에 권한 요청 메시지를 입력해주세요.

<key>NSMicrophoneUsageDescription</key>
<string>앱에서 사운드 재생을 위해 오디오 사용 권한이 필요합니다.</string>

이제 앱을 실행하고 헤드셋의 버튼을 눌러보면 사운드가 재생되는 것을 확인할 수 있습니다.

참고 자료