本文介绍了如何播放音频在后台斯威夫特?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
正如你看到我流音频广播。但是,当我preSS home键和退出应用程序流站和我听不到。我如何可以继续在后台流,并从锁屏听呢?
ViewController.Swift
进口的UIKit进口AVFoundation进口的MediaPlayer进口GoogleMobileAds 一流的ViewController:UIViewController的,GADInterstitialDelegate { @IBOutlet弱VAR exitMapButton:UIButton的! @IBOutlet弱VAR radarMap:UIWebView的! VAR间质性:的GADInterstitial! FUNC createAndLoadInterstitial() - > {的GADInterstitial VAR间质性=的GADInterstitial(adUnitId设置:CA-APP-酒馆2782958552分之5378899862041789) interstitial.delegate =自 interstitial.loadRequest(的GADRequest()) 返回间质性 } GetAd出现FUNC(){ 如果(self.interstitial.isReady) { self.interstitial。presentFromRootViewController(个体经营) self.interstitial = self.createAndLoadInterstitial() } } @IBOutlet弱VAR ataturkButton:UIButton的! @IBOutlet弱VAR sabihaButton:UIButton的! @IBOutlet弱VAR esenbogaButton:UIButton的! @IBOutlet弱VAR weatherButton:UIButton的! @IBOutlet弱VAR statusLabel:的UILabel! @IBOutlet弱VAR为playButton:UIButton的! @IBOutlet弱VAR webViewButton:UIButton的! VAR googleBannerView:GADBannerView的!覆盖FUNC viewDidLoad中(){ super.viewDidLoad() }类PlayerAv { VAR audioLink:字符串? VAR球员:AVPlayer 的init(链接:字符串){ self.audioLink =链接 self.player = AVPlayer(网址:NSURL(字符串:链接)) } } VAR myPlayer = PlayerAv(链接:www.liveatc/play/ltba.pls) 变种setTowerState = @IBAction FUNC sliderValueChanged(发件人:UISlider){ VAR CurrentValue的=浮动(sender.value) 的println(CurrentValue的) myPlayer.player.volume = CurrentValue的 } @IBAction FUNC getWeatherWindow(发件人:AnyObject){ 。UIApplication.sharedApplication()的OpenURL(NSURL(字符串: \"www.aviationweather.gov/adds/metars/?station_ids=ltac&std_trans=standard&chk_metars=on&hoursStr=most+recent+only&chk_tafs=on&submitmet=Submit\")!) 的println(定向天气页) } @IBAction FUNC changeToAtaturk(){ myPlayer.player.pause() myPlayer = PlayerAv(链接:www.liveatc/play/ltba.pls) myPlayer.audioLink == 的println(\\(myPlayer.audioLink) - A) playButton.setTitle(暂停,forState:UIControlState.Normal) myPlayer.player.play() setTowerState =阿塔图尔克 statusLabel.text =状态:播放,LTBA } @IBAction FUNC changeToEsenboga(){ myPlayer.player.pause() myPlayer = PlayerAv(链接:www.liveatc/play/ltac.pls) 的println(\\(myPlayer.audioLink) - A) playButton.setTitle(暂停,forState:UIControlState.Normal) myPlayer.player.play() setTowerState =伯卡 statusLabel.text =状态:播放,LTAC } @IBAction FUNC changeToSabiha(){ myPlayer.player.pause() myPlayer = PlayerAv(链接:www.liveatc/play/ltfj.pls) 的println(\\(myPlayer.audioLink) - A) playButton.setTitle(暂停,forState:UIControlState.Normal) myPlayer.player.play() setTowerState =萨比哈 statusLabel.text =状态:播放,LTFJ } 覆盖FUNC didReceiveMemoryWarning(){ super.didReceiveMemoryWarning() 可以重新创建任何资源的处置//。 } @IBAction FUNC为playButton pressed(发件人:AnyObject){ 切换() } 拨动FUNC(){ 如果playButton.titleLabel?==的.text播放{ playRadio() 的println(播放) statusLabel.text =状态:玩 }其他{ pauseRadio() 的println(暂停) statusLabel.text =状态:暂停 } } FUNC playRadio(){ myPlayer.player.play() playButton.setTitle(暂停,forState:UIControlState.Normal) } FUNC pauseRadio(){ myPlayer.player.pause() playButton.setTitle(播放,forState:UIControlState.Normal) } }解决方案
您需要设置你的应用程序功能的背景模式(音频和AirPlay)和您AVAudioSession类别设置为AVAudioSessionCategoryPlayback并设置其激活
更新: X $ C $ 7.0Ç(AppStore的)•斯威夫特2.0
{做 尝试AVAudioSession.sharedInstance()。setCategory(AVAudioSessionCategoryPlayback) 打印(AVAudioSession分类播放OK) 做{ 尝试AVAudioSession.sharedInstance()。SETACTIVE(真) 打印(AVAudioSession是活动) }赶上让误差NSError { 打印(error.localizedDescription) }}赶上让误差NSError { 打印(error.localizedDescription)}
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
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: "www.liveatc/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: "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: "www.liveatc/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: "www.liveatc/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: "www.liveatc/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) } }解决方案
You need to set your app Capabilities Background Modes (Audio and AirPlay) and set your AVAudioSession category to AVAudioSessionCategoryPlayback and set it active
Update: Xcode 7.0 (AppStore) • Swift 2.0
do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) print("AVAudioSession Category Playback OK") do { try AVAudioSession.sharedInstance().setActive(true) print("AVAudioSession is Active") } catch let error as NSError { print(error.localizedDescription) } } catch let error as NSError { print(error.localizedDescription) }更多推荐
如何播放音频在后台斯威夫特?
发布评论