[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>
이제 앱을 실행하고 헤드셋의 버튼을 눌러보면 사운드가 재생되는 것을 확인할 수 있습니다.
참고 자료
- AVFoundation - Apple Developer Documentation
- NSNotification.Name.mediaServicesWereResetNotification - Apple Developer Documentation