簡體   English   中英

如何檢測iOS設備無法播放我的音頻流URL-swift3

[英]How can I detect if my audio streaming url can not be play by iOS device - swift3

我正在用Swift 3制作一個iOS Radio應用! 現在它可以正常工作,並且可以很好地播放所有URL地址音頻流。 但是當我在工作場所時,Wifi會限制播放音頻流,因此該應用程序只能與Mobile Data一起使用。

當我單擊“播放”按鈕時,它變為“暫停”,並且不發送任何聲音,不播放,並且控制台不顯示任何連接錯誤或類似信息。 我想知道何時某些WIFI網絡的防火牆或代理阻止我的應用程序發送一些UIAlert並將“暫停”圖標更改為“播放”(如果我不這樣做,用戶將在等待音樂)。

我正在使用Swift 3.0 Xcode 8和AVPlayer播放音頻。 我已經嘗試過.addPeriodicTimerObserver,我已經驗證了url並做了很多事情,但是我沒有得到想要的結果。 有人能幫我嗎?

var urlStreaming:String = "http://someurl"
playerStreaming = AVPlayer(url: URL(string: url)!)
playerLayer = AVPlayerLayer(player: playerStreaming)
playerLayer.frame = CGRect(x:0, y: 0, width:1, height: 10)
self.view.layer.addsublayer(playerLayer)

playerStreaming?.play()

我的playerStreaming?.play()不能播放時什么也沒發給我,因為它開始嘗試播放,但是幾秒鍾后它停止並且不發送任何東西。 當我在工作場所使用WIFI連接時會發生這種情況,但是如果我將其更改為移動數據,則可以收聽音頻。 如果我通過其他wifi連接(例如我的房屋,公園或星巴克咖啡wifi)播放,我也可以毫無問題地收聽。

我知道我的工作場所中的Wifi連接對音頻流有限制(實際上我不確定,是否已被防火牆或代理阻止)。

我一直在尋找很多選擇,並且嘗試了所有這些選擇,但是我已經得到了想要的結果。

你能幫助我嗎?

您可以通過以下方式偵聽錯誤

NotificationCenter.default.addObserver(self, selector: #selector(playerItemFailedToPlay(_:)), name: NSNotification.Name.AVPlayerItemFailedToPlayToEndTime, object: nil)

NotificationCenter.default.addObserver(self, selector: #selector(playerItemFailedToPlay(_:)), name: NSNotification.Name.AVPlayerItemPlaybackStalled, object: nil)

func playerItemFailedToPlay(_ notification: Notification) {
    let error = notification.userInfo?.first(where: { $0.value is Error }) as? Error

}

不要為了刪除觀察者

deinit {
    NotificationCenter.default.removeObserver(self)
}

我想我找到了要檢查的東西。 @僵屍你怎么辦? 我檢查了網址是否有效或播放了多少時間。

PS也許我會更改“超時”值,但現在要花很多時間。

控制台顯示:

錯誤信息:->錯誤域= NSURLErrorDomain代碼= -1001“請求超時”。 我想我可以驗證我的錯誤是否為null。 如果為空,我可以顯示一個UIAlert

 let urltest = URL(string: yourul)
    let task = URlSession.shared.dataTask(with: urlTest!){
    data, response, error in

    if(error != nil){
    print("Error info: -> \(error!)")

    //I think here I can changes the Image if i found a error 
    }
    else{
     print("It is going to be play without problem")
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM