バックグラウンドで実行する必要があるAVQueuePlayer
ベースのオーディオストリーミングプレーヤーがあります。プレーヤーは、すべてのリストの再生が終了するまで実行を続ける必要があります。もちろん、ネットワーク接続が悪くなった場合は一時停止する必要がありますが、ネットワーク接続が回復すると自動的に再開するはずです。
このために、私は監視しています
AVPlayerItem.status
AVPlayerItem.playbackLikelyToKeepUp
AVPlayer.currentItem
AVPlayer.status
AVPlayer.error
KVOを使用します。たとえば、ネットワーク接続が一時的なエラーから回復した場合、はにcurrentAVPlayerItem.status
なると予想AVPlayerStatusItemReadyToPlay
されます。これはプレーヤーに報告され、[AVQueuePlayer play]
その時点で発行できます。
このメカニズム(ロジック)は場合によっては機能するように見えますが、オフライン環境では非常に頻繁にAVPlayerItem.status
なりAVPlayerItemStatusFailed
、この項目AVQueuePlayer
は自動的にスキップされるようです。その結果、キューは空になり、からコールバックを受信できなくなりますAVPlayerItem
。
AVPlayer
ネットワーク接続が悪くなったり回復したりすると、の一部のプロパティが変更されることを期待していましたが、何も変更されていないようですstatus
(error
など)。
明らかに私は監視できますReachability
が、アプリがバックグラウンドで実行されている場合は機能しません。
AVQueuePlayer
ネットワークが復旧し、この状況で再び再生可能になる時期を知るにはどうすればよいですか?
私はこの地域の初心者に過ぎないかもしれません。AVQueuePlayer
一時的なネットワーク接続の問題に完全にとらわれることなく、どのようにして継続的なプレイ体験を実現するかについて、誰かが私に一般的な考えを教えてくれるなら、それも素晴らしい助けになるでしょう!