2016-05-16 71 views
2

我使用AVFoundation的AVPlayer傳輸外部mp3文件。我在後端有一個計數器來計算文件加載的次數。這項服務的唯一客戶端只有我,當我觸發播放AVPlayer時,計數器會增加兩個,這意味着AVPlayer會提出兩次請求。是否有這個原因,或者我怎樣才能防止這種情況發生?這裏是我的代碼:爲什麼Swift的AVPlayer會在一次播放中加載playerItem兩次?

@IBAction func listen(sender: UIButton) { 
    let urlstring = "http://api.server.com/endpoint-to-mp3" 
    let url = NSURL(string: urlstring) 

    let playerItem = AVPlayerItem(URL: url!) 

    let player = AVPlayer(playerItem: playerItem) 

    let playerLayer = AVPlayerLayer(player: player) 
    playerLayer.frame = CGRectMake(0, 0, 300, 50) 
    self.view.layer.addSublayer(playerLayer) 

    player.volume = 1.0 
    player.play() 
} 
+0

你看到了什麼類型的請求?能不能只有一個標題請求,另一個是實際數據? – ColGraff

回答

4

AVPlayer每當你與AVPlayerItem初始化播放器進行網絡請求URL。此調用僅提取文件信息和文件大小。 (此時,我可以在某個時間觀察2個請求,這可能會使您的計數增加到3)

稍後,當您將播放器附加到任何視圖時,將發生另一個調用以獲取完整文件。 (您可以使用Charles來觀察你的網絡流量,僅供參考)

當你initinit(url:)所以我沒有看到任何可能阻止這在目前發生的球員這種行爲是一樣的。

enter image description here

+1

很好的回答!感謝您的描述,謝謝Charles提示。 ;) – Guney