2015-05-16 21 views
28

Gördüğünüz gibi bir ses yayını yayınlıyorum. Ama ana ekran düğmesine bastığımda ve uygulama akış duraklarından çıktığımda veya duyamıyorum. Arka planda akışa nasıl devam edebilirim ve kilit ekranından nasıl dinleyebilirim?Arka Plan Swift'de Ses Nasıl Oynanır?

ViewController.Swift

için bunları uygulama Yetenek Arkaplan Modları (Ses ve AirPlay) ayarlayabilir ve AVAudioSessionCategoryPlayback için AVAudioSession kategorisini ayarlamak ve ayarlamanız gerekir
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) 
     } 
    } 

cevap

97

aktif

Xcode itibaren 8.2.1 • Swift 3.0.2 itibaren

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

enter image description here

+0

Teşekkürler _________ –

+0

@ardakaraca –

+2

@LeoDabus Bu kodu nereye koyarız? Bunu viewDidLoad ve uygulama temsilcisine ekledim ve çalışmadı. Nereye gitmesi gerektiği konusunda kafanız karıştı mı? – lukaivicev