我想建立我的第一个macOS-App。我的目标是,我可以选择一个无人电流并播放它。但它没有用。
以下是代码:
import Cocoa
import AVFoundation
import AVKit
class ViewController: NSViewController {
@IBOutlet weak var RadioList: NSPopUpButton!
override func viewDidLoad() {
super.viewDidLoad()
let RadioListArray = ["Unser Radio", "Antenne"]
RadioList.removeAllItems()
RadioList.addItems(withTitles: RadioListArray)
RadioList.selectItem(at: 0)
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
@IBAction func PlayStopButton(_ sender: AnyObject) {
var url = String()
switch RadioList.indexOfSelectedItem {
case 0:
url = "http://rs4.stream24.net:80/unser-radio.mp3"
case 1:
url = "http://mp3channels.webradio.antenne.de/antenne"
default:
print("nothing")
}
Stream(url: url)
}
func Stream(url: String)
{
print(url)
let player = AVPlayer(url: URL(string: url)!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
self.view.layer?.addSublayer(playerLayer)
player.play()
}
}
当我将网址直接复制到浏览器时,比流式传输开始好。当我插入视频时,视频将在应用程序中启动。
音频流行音是特别的吗?
答案 0 :(得分:1)
这是因为Apple默认不允许您加载任何http
内容。如果仔细查看调试控制台,可能会出现以下错误
App Transport Security已阻止明文HTTP(http://) 资源负荷,因为它是不安全的。临时例外可以 通过您应用的Info.plist文件进行配置。
要解决此问题,只需在下方添加info.plist
文件
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
详细信息可在this SO回答
中找到