[swift] 백그라운드에서 사운드 재생하기

iOS 앱을 개발할 때, 백그라운드에서도 사운드를 재생해야 하는 경우가 있습니다. 예를 들어, 음악 재생 앱이나 알람 앱 등이 대표적인 예입니다. 이러한 상황에서 사운드를 백그라운드에서 재생하기 위해서는 몇 가지 추가적인 설정과 코드 작성이 필요합니다. 이번 포스트에서는 Swift를 사용하여 백그라운드에서 사운드를 재생하는 방법에 대해 알아보겠습니다.

1. 백그라운드에서 사운드 재생을 위한 설정

iOS에서 앱이 백그라운드에서 동작하기 위해서는 “Background Modes” 설정을 활성화해야 합니다. 이 설정을 활성화하면 앱이 백그라운드에서도 작동할 수 있는 추가적인 권한을 부여받을 수 있습니다.

  1. 프로젝트의 타겟을 선택합니다.
  2. “Signing & Capabilities” 탭을 선택합니다.
  3. “Background Modes” 옵션을 활성화합니다.
  4. “Audio, AirPlay, and Picture in Picture” 옵션을 선택합니다.

2. AVAudioPlayer를 사용하여 사운드 재생하기

AVAudioPlayer는 iOS에서 사운드 파일을 재생하기 위한 클래스입니다. 다음은 백그라운드에서 사운드를 재생하기 위한 코드 예시입니다.

import AVFoundation

class SoundPlayer {
    var audioPlayer: AVAudioPlayer?

    func playSound() {
        guard let url = Bundle.main.url(forResource: "sound", withExtension: "mp3") else {
            return
        }

        do {
            try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
            try AVAudioSession.sharedInstance().setActive(true)

            audioPlayer = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
            audioPlayer?.play()
        } catch {
            print("Error playing sound: \(error.localizedDescription)")
        }
    }
}

위의 코드에서는 AVAudioPlayer를 사용하여 “sound.mp3”라는 파일을 재생하는 playSound() 메서드를 정의합니다. AVAudioSession.sharedInstance().setCategory() 메서드를 통해 재생 카테고리를 설정하고, AVAudioPlayer를 생성하여 사운드를 재생합니다.

3. 백그라운드에서 사운드 재생 허용 설정

백그라운드에서 사운드를 재생하기 위해선 “Info.plist” 파일에 추가적인 설정이 필요합니다. 파일을 열고 다음 코드를 추가해주세요.

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

위의 코드는 “audio” 백그라운드 모드를 추가하는 코드입니다. 이 설정을 통해 앱이 백그라운드에서 오디오 재생을 지원한다는 것을 시스템에 알려줄 수 있습니다.


위의 과정을 따라 백그라운드에서 사운드를 재생할 수 있도록 설정하고, AVAudioPlayer를 사용하여 사운드를 재생하는 방법에 대해 알아보았습니다. 이를 활용하여 iOS 앱에서 백그라운드에서도 사운드를 재생할 수 있으며, 이를 활용하여 다양한 기능을 개발할 수 있습니다.

참고: https://developer.apple.com/documentation/avfoundation/audio_and_video_playback_in_background