[swift] AVAudioPlayer를 사용한 사운드 재생

iOS 애플리케이션에서 사운드를 재생하려면 AVAudioPlayer 클래스를 사용할 수 있습니다. AVAudioPlayer는 로컬 또는 원격 파일에서 오디오를 재생하는 데 사용됩니다. 이번 글에서는 AVAudioPlayer를 사용하여 사운드를 재생하는 방법에 대해 알아보겠습니다.

1. 사운드 파일을 로드하기

먼저, 재생할 사운드 파일을 프로젝트에 추가해야 합니다. Xcode에서 파일을 선택하고 “Copy items if needed”를 선택하여 프로젝트에 복사할 수 있습니다. 이렇게 하면 앱 번들에 사운드 파일이 포함되어 실행할 때 사용할 수 있습니다.

2. AVAudioPlayer 인스턴스 생성하기

다음으로, AVAudioPlayer 인스턴스를 생성해야 합니다. 생성자로는 사운드 파일의 경로를 전달해야 합니다. 일반적으로 Bundle.main.path(forResource:ofType:) 메서드를 사용하여 사운드 파일의 경로를 얻을 수 있습니다.

guard let soundPath = Bundle.main.path(forResource: "sound", ofType: "mp3") else {
    print("사운드 파일을 찾을 수 없습니다.")
    return
}

let soundURL = URL(fileURLWithPath: soundPath)

do {
    let audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
    audioPlayer.prepareToPlay()
    audioPlayer.play()
} catch {
    print("오디오 재생 실패: \(error.localizedDescription)")
}

위의 코드에서는 sound.mp3 파일을 재생하는 AVAudioPlayer 인스턴스를 생성하고 있습니다. AVAudioPlayer의 prepareToPlay() 메서드를 호출하여 재생을 준비하고, play() 메서드를 호출하여 사운드를 재생합니다.

3. 사운드 제어하기

AVAudioPlayer 인스턴스를 사용하여 사운드를 제어할 수 있습니다. 아래는 일반적으로 사용되는 메서드들입니다:

// 재생 중인 사운드를 일시 정지하고 싶을 때
if audioPlayer.isPlaying {
    audioPlayer.pause()
}

// 일시 정지한 사운드를 다시 재생하고 싶을 때
audioPlayer.play()

// 사운드를 중단하고 처음부터 재생하고 싶을 때
audioPlayer.stop()
audioPlayer.currentTime = 0
audioPlayer.play()

4. AVAudioPlayerDelegate 사용하기

AVAudioPlayerDelegate를 사용하면 사운드 재생의 상태 변화를 감지할 수 있습니다. 예를 들어, 사운드 재생이 완료되면 특정 동작을 수행할 수 있습니다. 아래는 AVAudioPlayerDelegate를 사용하는 방법입니다:

class ViewController: UIViewController, AVAudioPlayerDelegate {
    var audioPlayer: AVAudioPlayer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // AVAudioPlayer 인스턴스 생성 및 delegate 설정
        // ...
        
        audioPlayer.delegate = self
    }
    
    // 사운드 재생 완료 시 호출되는 메서드
    func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
        // 재생이 완료되면 여기에 수행할 동작을 작성하세요
    }
}

위의 코드에서는 AVAudioPlayerDelegate 프로토콜을 적용하고, 사운드 재생이 완료되면 호출되는 audioPlayerDidFinishPlaying(_:successfully:) 메서드를 구현하고 있습니다.

AVAudioPlayer를 사용하여 사운드를 재생하는 방법에 대해 알아보았습니다. AVAudioPlayer를 활용하여 다양한 기능을 구현할 수 있으니, 자신의 애플리케이션에 맞게 활용해보세요!

참고 자료: