Я пытался воспроизвести URL-адрес разными способами, но я обнаружил кое-что, что заставило AVPlayer работать, но все еще не знаю, что происходит за кулисами ...
Мой первый подход состоял в инициализации AVPlayerи установить делегат загрузчика ресурсов AVURLAsset, но, поскольку зарезервированная / стандартная схема URL не вызывает делегат, я попал в тупик ...
Во-вторых, и после реализации AVPlayer вот так:
class ViewController: UIViewController, AVAssetResourceLoaderDelegate {
let urlFile = URL(string:"http://player.absoluteradio.co.uk/tunein.php?i=a664.aac")!
private var avPlayer:AVPlayer!
private var avAudioSession:AVAudioSession = AVAudioSession.sharedInstance()
override func viewDidLoad() {
super.viewDidLoad()
try! avAudioSession.setCategory(.playback, mode: .default, options: [])
try! avAudioSession.setActive(true)
let audioURLAsset = AVURLAsset(url: urlFile)
//audioURLAsset.resourceLoader.setDelegate(self, queue:DispatchQueue.init(label: "MY QUEUE"))
avPlayer = AVPlayer(playerItem: AVPlayerItem(asset: audioURLAsset))
avPlayer.play()
}
}
Я разрешил Произвольные загрузки в моем info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
И это сработало!