31

私のアプリは を介し​​てストリーミング オーディオを再生し、デバイスのロック画面にストリームに関する情報を表示するためAVPlayerに使用します。MPNowPlayingInfoCenter

これは、オーディオが実際に再生されている場合は正常に機能しますが、ネットワークの速度低下によりストリームが停止した場合 (つまり、受信しAVPlayerItemPlaybackStalledNotificationた場合)、ロック画面から情報が消えます。ただし、ストリームの再生が再開されると、再び表示されます。

現在再生中の情報がロック画面から消えると、アプリが再生を停止したように見えるため、これは混乱を招きます。ただし、ロック画面の UI がこれが起こらないことを示しているように見える場合は、再生を再開します。

ストリームを再生する必要があるが、現在はネットワーク速度の問題が原因ではない場合に、現在再生中の情報が表示されたままになるようにするためにできることはありますか? 一貫したロック画面の UI を維持する唯一の方法は、ネットワーク接続が停止したときにネットワーク接続を実際に切断することのように思えます。

詳細が役立つ場合:

  • アプリがその通知を受け取ったときに行うことは、UI を更新することだけです。
  • 現在のプログラムがあるときにアプリがクリアされることはないMPNowPlayingInfoCenterため、ストリームが再生されている限り、表示されるはずの空でないデータがあります。
4

2 に答える 2

1

私が推測すると (そして、AVFoundation を使用してからしばらく経ちます)、データがオーディオ バッファーを通過しなくなるとすぐに、オーディオ セッションが OS によって非アクティブ化されると思います。1 つのトリックは、再生を再開するのに十分なデータをバッファリングするか、タイムアウトに達してあきらめるまで、沈黙を再生してデッド スポットを埋める 2 つ目の AVPlayer を維持することです。通知を使用して、プレーヤー オブジェクトを切り替えます。

于 2015-06-02T07:29:35.403 に答える