ile bir radyo bağlantısı olması Gerçekten de, uzun bir süre sonra tekrar başladığında oyuncunun limbo olduğunu gösteren bir işaret yoktur. (Benim testlerimde, bu durumda AVPlayerItem'den alınan metanun null olduğunu gördüm)
Neyse .. Duraklattığınız zaman, internetten aldığımdan (bu konuda uygun bir belge yok), Oyuncu arka planda tamponlamaya devam eder ve eğer 50-60 saniyeden sonra devam ederseniz sadece yapamazsınız. Bir durdurma işlevi burada iyi olurdu.
Benim çözümüm: 50 saniye geçip geçmediğini kontrol etmek için basit bir zamanlayıcı ve eğer devam ederse, özgeçmiş yöntemi çağrıldığında bir bayrağı güncellemek istiyorum Yeni bir oyuncu başlatmak istiyorum.
func pausePlayer() {
..
player.pause()
..
// Will count to default 50 seconds or the indicated interval and only then set the bufferedInExcess flag to true
startCountingPlayerBufferingSeconds()
bufferedInExcess = false
}
func startCountingPlayerBufferingSeconds(interval: Double = 50) {
timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: Selector("setExcessiveBufferedFlag"), userInfo: nil, repeats: false)
}
func setExcessiveBufferedFlag() {
if DEBUG_LOG {
print("Maximum player buffering interval reached.")
}
bufferedInExcess = true
}
func stopCountingPlayerBufferingSeconds() {
timer.invalidate()
}
func resumePlayer() {
if haveConnectivity() {
if (.. || bufferedInExcess) {
startPlaying(true)
} else {
..
player.play
}
..
}
}
func startPlaying(withNewPlayer: Bool = false) {
if (withNewPlayer) {
if DEBUG_LOG {
print("Starting to play on a fresh new player")
}
// If we need another player is very important to fist remove any observers for
// the current AVPlayer/AVPlayerItem before reinitializing them and add again the needed observers
initPlayer()
player.play()
...
}
...
}
Durum kontrollerinin 60 saniye gecikmesinden sonra yapıldığını düşünüyorum, değil mi? – sailens
evet tam olarak ikisi de 60 saniye beklemeden sonra kontrol yap – turushan
Bunun neden olduğu hakkında hiçbir fikrim yok: S – sailens