[AVPlayer] background audio

2017. 9. 11. 11:44Programming/Swift

반응형

https://www.youtube.com/watch?v=dqad3XuMwHI


1. 해당 음악 파일을 추가하였을 경우 Build Phases 에 추가가 되었는지 확인해 보자. (ex. sample.mp3)

   추가가 안되어있으면 + 버튼으로 추가해 주면 된다.


2. 어플이 종료 되어도 백그라운드에서 돌아갈 수 있게 하려면 아래와 같이 설정 해야 한다.


3. 소스

import UIKit

import AVFoundation


class ViewController: UIViewController {


    var audioPlayer = AVAudioPlayer()

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        do {

            audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "sample", ofType: "mp3")!))

            audioPlayer.prepareToPlay()

            

            // 백그라운드에서도 돌아갈 수 있게 하는 코드

            var audioSession = AVAudioSession.sharedInstance()

            do {

                try audioSession.setCategory(AVAudioSessionCategoryPlayback)

            } catch {

                

            }

            

        } catch {

            print(error)

        }

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

    @IBAction func play(_ sender: Any) {

        audioPlayer.play()

        

    }


    @IBAction func pause(_ sender: Any) {

        if audioPlayer.isPlaying {

            audioPlayer.pause()

        } else {

            

        }

    }

    

    @IBAction func restart(_ sender: Any) {

        if audioPlayer.isPlaying {

            audioPlayer.currentTime = 0

            audioPlayer.play()

        } else {

            audioPlayer.play()

        }

        

    }

} 


4. 시뮬레이터를 돌렸을 경우 백그라운드 설정을 굳이 안해도, 어플이 종료가 되어도 음악이 나왔다.

   그러나 아이폰에 직접 넣어서 해보았더니, 백그라운드 설정해야지 되더라!

반응형