AVPlayerを使用して音楽ストリーミングアプリを作成しています。すべてが正常に機能している、音楽がバックグラウンドで再生され続けるなど。私の問題は、電話で接続損失をシミュレートする場合(セルラーデータをオフにし、ストリームが停止するのを待ってから元に戻す)、約2分かかることです。 3Gネットワークが存在する場合でもバッファを埋めるためのアプリ(その間にWebサーフィンをすることができます)。
すべてがシミュレーターで機能していますが、デバイスでは機能していません。2分待つと、適切なplaybackLikelyToKeepUp通知が届きます。それ以降はすべて問題ありませんが、再バッファリングは数秒で完了します。ルーターの帯域幅制御をオフにして低帯域幅をシミュレートする場合は問題ありませんが、セルラーデータをオフにして、その長さに戻すことでキャリアの変更をシミュレートする場合は問題ありません。
「playbackBufferEmpty」でbeginInterruptionを呼び出し、「playbackLikelyToKeepUp」でendInterruptionを呼び出しています。主な問題は、「playbackLikelyToKeepUp」の到着が遅すぎることです。
- (void)beginInterruption {
self.backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
}
- (void)endInterruptionWithFlags:(NSUInteger)flags {
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskIdentifier];
self.backgroundTaskIdentifier = UIBackgroundTaskInvalid;
if(self.interrupted) [self play];
self.interrupted = NO;
}
何か案は?私はこの問題で一日を過ごし、すべてをグーグルで検索しましたが、行き詰まっています。前もって感謝します。