如何播放音频在后台斯威夫特?

编程入门 行业动态 更新时间:2024-10-25 16:30:25
本文介绍了如何播放音频在后台斯威夫特?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

正如你看到我流音频广播。但是,当我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) }

更多推荐

如何播放音频在后台斯威夫特?

本文发布于:2023-07-11 09:07:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1093522.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:后台   斯威夫特   音频

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!