Mam odtwarzacz strumieniowego przesyłania danych oparty na AVQueuePlayer
, który musi działać w tle. Gracz musi kontynuować grę, dopóki nie zakończy odtwarzania całej listy. Oczywiście będzie musiał przerwać, jeśli połączenie sieciowe stanie się złe, ale powinno zostać automatycznie wznowione po powrocie połączenia sieciowego.Jak uzyskać połączenie zwrotne z AVQueuePlayer/AVPlayerItem, gdy sieć staje się aktywna (i jest gotowa do odtwarzania)?
Do tego mam monitorowania
AVPlayerItem.status
AVPlayerItem.playbackLikelyToKeepUp
AVPlayer.currentItem
AVPlayer.status
AVPlayer.error
używając KV O. Jeśli na przykład odzyskasz połączenie sieciowe z tymczasowego błędu, oczekuję, że currentAVPlayerItem.status
stanie się , który zostanie zgłoszony mojemu odtwarzaczowi i będę mógł wydać w tym momencie [AVQueuePlayer play]
.
Ten mechanizm (logika) wydaje się działać niektóre przypadki, ale dość często w trybie offline środowiska, AVPlayerItem.status
staje AVPlayerItemStatusFailed
, który element AVQueuePlayer
wydaje się automatycznie pominąć. W rezultacie kolejka będzie pusta i nie będzie można odebrać wywołania zwrotnego od AVPlayerItem
.
miałem nadzieję, że niektóre nieruchomości w AVPlayer
zmieni, gdy połączenie sieciowe psuje/odzyskuje, ale nic nie wydaje się zmieniać (status
, error
etc).
Oczywiście mogę monitorować Reachability
, ale to nie działa, gdy aplikacja działa w tle.
Skąd mam wiedzieć, kiedy sieć się zwróci i AVQueuePlayer
będzie można odtworzyć w tej sytuacji?
Mogę być po prostu nowicjuszem w tym obszarze. Jeśli ktokolwiek może mi dać ogólny pogląd na to, jak on/ona osiąga nieprzerwane doświadczenie gry, nie będąc całkowicie zatrzymanym przez tymczasowe problemy z połączeniem z siecią, będzie to również niesamowita pomoc!
Mając ten sam problem. Czy znalazłeś jakieś rozwiązanie? – adamsfamily