How to Play Audio in Background Swift?

As you see I’m streaming an audio broadcast. But when I press the home button and exit the app streaming stops or I cannot hear. How can I continue streaming in background and listen it from lock screen?

ViewController.Swift

  • iOS: Get pixel-by-pixel data from camera
  • Record and play audio with AVAssetWriter
  • Remove audio from a video file
  • Low recording volume in combination with AVAudioSessionCategoryPlayAndRecord
  • what is the best way to play sound quickly upon fast button presses xcode?
  • Determine Number of Frames in a Core Audio AudioBuffer
  • import UIKit
    import AVFoundation
    import MediaPlayer
    import GoogleMobileAds
    
    
        class ViewController: UIViewController, GADInterstitialDelegate {
    
            @IBOutlet weak var exitMapButton: UIButton!
            @IBOutlet weak var radarMap: UIWebView!
            var interstitial: GADInterstitial!
            func createAndLoadInterstitial() -> GADInterstitial {
                var interstitial = GADInterstitial(adUnitID: "ca-app-pub-5378899862041789/2782958552")
                interstitial.delegate = self
                interstitial.loadRequest(GADRequest())
                return interstitial
            }
    
            func getAd(){
                if (self.interstitial.isReady)
                {
                    self.interstitial.presentFromRootViewController(self)
                    self.interstitial = self.createAndLoadInterstitial()
                }
            }
            @IBOutlet weak var ataturkButton: UIButton!
            @IBOutlet weak var sabihaButton: UIButton!
            @IBOutlet weak var esenbogaButton: UIButton!
            @IBOutlet weak var weatherButton: UIButton!
            @IBOutlet weak var statusLabel: UILabel!
            @IBOutlet weak var playButton: UIButton!
            @IBOutlet weak var webViewButton: UIButton!
            var googleBannerView: GADBannerView!
    override func viewDidLoad() {
                super.viewDidLoad()
            }
    class PlayerAv {
                var audioLink: String?
                var player: AVPlayer
                init(link: String) {
                    self.audioLink = link
                    self.player = AVPlayer(URL: NSURL(string: link))
                }
            }
            var myPlayer = PlayerAv(link: "http://www.liveatc.net/play/ltba.pls")
            var setTowerState = ""
    
            @IBAction func sliderValueChanged(sender: UISlider) {
                var currentValue = Float(sender.value)
                println(currentValue)
                myPlayer.player.volume = currentValue
            }
            @IBAction func getWeatherWindow(sender: AnyObject) {
                UIApplication.sharedApplication().openURL(NSURL(string: "http://www.aviationweather.gov/adds/metars/?station_ids=ltac&std_trans=standard&chk_metars=on&hoursStr=most+recent+only&chk_tafs=on&submitmet=Submit")!)
                println("Directed to weather page")
            }
            @IBAction func changeToAtaturk() {
                myPlayer.player.pause()
                myPlayer = PlayerAv(link: "http://www.liveatc.net/play/ltba.pls")
                myPlayer.audioLink == ""
                println("\(myPlayer.audioLink!)--a")
                playButton.setTitle("Pause", forState: UIControlState.Normal)
                myPlayer.player.play()
                setTowerState = "ataturk"
                statusLabel.text = "Status: Playing, LTBA"
            }
            @IBAction func changeToEsenboga() {
                myPlayer.player.pause()
                myPlayer = PlayerAv(link: "http://www.liveatc.net/play/ltac.pls")
                println("\(myPlayer.audioLink!)--a")
                playButton.setTitle("Pause", forState: UIControlState.Normal)
                myPlayer.player.play()
                setTowerState = "esenboga"
                statusLabel.text = "Status: Playing, LTAC"
            }
            @IBAction func changeToSabiha() {
                myPlayer.player.pause()
                myPlayer = PlayerAv(link: "http://www.liveatc.net/play/ltfj.pls")
                println("\(myPlayer.audioLink!)--a")
                playButton.setTitle("Pause", forState: UIControlState.Normal)
                myPlayer.player.play()
                setTowerState = "sabiha"
                statusLabel.text = "Status: Playing, LTFJ"
            }
            override func didReceiveMemoryWarning() {
                super.didReceiveMemoryWarning()
                // Dispose of any resources that can be recreated.
            }
            @IBAction func playButtonPressed(sender: AnyObject) {
                toggle()
            }
            func toggle() {
                if playButton.titleLabel?.text == "Play" {
                    playRadio()
                    println("Playing")
                    statusLabel.text = "Status: Playing"
                } else {
                    pauseRadio()
                    println("Paused")
                    statusLabel.text = "Status: Paused"
                }
            }
            func playRadio() {
                myPlayer.player.play()
                playButton.setTitle("Pause", forState: UIControlState.Normal)   
            }
            func pauseRadio() {
                myPlayer.player.pause()
                playButton.setTitle("Play", forState: UIControlState.Normal)
            }
        }
    

    Solutions Collect From Internet About “How to Play Audio in Background Swift?”

    You need to set your app Capabilities Background Modes (Audio and AirPlay) and set your AVAudioSession category to AVAudioSessionCategoryPlayback and set it active

    Xcode 8.2.1 • Swift 3.0.2

    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)
        print("AVAudioSession Category Playback OK")
        do {
            try AVAudioSession.sharedInstance().setActive(true)
            print("AVAudioSession is Active")
        } catch {
            print(error)
        }
    } catch {
        print(error)
    }
    

    enter image description here