2010-12-30 16 views
5

Używam AVPlayer do odtwarzania strumienia audio i można go odtworzyć w tle. Zastanawiam się, w jaki sposób poradzić sobie z sytuacją, w której użytkownik traci połączenie z Internetem, dzięki czemu mógłbym przekazać informacje zwrotne lub spróbować przywrócić odtwarzanie po kilku sekundach.Jak radzić sobie z błędami AVPlayer, gdy aplikacja działa w tle?

EDYCJA: Wiem, że pytanie dotyczy AVPlayera, ale jeśli masz odpowiedź z MPMoviePlayerController, może być również przydatne. Teraz, korzystając z MPMoviePlayerController, próbuję uzyskać numer MPMovieFinishReasonPlaybackError z MPMoviePlayerPlaybackDidFinishReasonUserInfoKey, subskrybując numer MPMoviePlayerPlaybackDidFinishNotification, ale jeśli f.e. mój dźwięk jest odtwarzany w tle i włączam tryb samolotowy, nigdy nie otrzymuję powiadomienia; Dostaję tylko MPMovieFinishReasonPlaybackEnded i nie wiem, jak oddzielić to od przypadku, w którym użytkownik zatrzymuje dźwięk sam.

Odpowiedz

4

Próbowałem rozglądać się za faktycznym źródłem, ale pamiętam, że przeczytałem gdzieś, że jeśli odtwarzanie audio zatrzyma się (z jakiegokolwiek powodu), zabije on wątek tła. Osoba pisząca o tym problemie mówiła o możliwości zasilenia strumienia jakąś pustą treścią audio, aby utrzymać wątek przy życiu. Możesz być w stanie wysłać powiadomienie lokalne z błędu oddzwaniania, powiadamiając użytkownika, że ​​wystąpił błąd dźwięku i konieczne będzie ręczne zrestartowanie go z poziomu aplikacji. Nie korzystałem z API wystarczająco, aby wiedzieć, który callback jest najlepszy w tym przypadku. Jeśli znajdę link, którego szukam, zaktualizuję.

EDYCJA: Poniżej znajduje się propozycja Granta Pannella dotycząca audio streaming and multitasking.

+0

Link jest martwy :( – jocull

+1

Znalazłem kopię na stronie Way Back Machine http://web.archive.org/web/20110525032820/http://digitaldj.net/2010/07/03/ios4-multitasking- programiści-hell/ – jocull

+0

@jocull fajne wykorzystanie webarchiver –

Powiązane problemy