Mam aplikację, która przesyła wideo z sieci i odtwarza je przy użyciu obiektu MPMoviePlayerController
do odtwarzania na urządzeniu lub za pośrednictwem AirPlay.Reagowanie na powiadomienia MPMoviePlayerController podczas odtwarzania w tle multimediów
Aplikacja obsługuje operacje w tle i ma opcję "audio" wymienioną w wymaganym kluczu UIBackgroundModes
w swoim pliku plist.
Podczas odtwarzania w trybie AirPlay można z powodzeniem przesuwać aplikację w tło, a wideo jest nadal odtwarzane poprawnie. Jak na razie dobrze.
Według Apple documentation:
tym kluczu dźwięku mówi ram systemowych, które powinny kontynuować gry i wprowadzić niezbędne zwrotnych do aplikacji na odpowiednich odstępach czasu. Jeśli aplikacja nie zawiera tego klucza, dźwięk odtwarzany przez aplikację zatrzymuje się, gdy aplikacja przenosi się na tło.
Jednak te wywołania zwrotne nie są wykonywane.
Aplikacja wykorzystuje dwa typy wywołań zwrotnych: związane z powiadomieniami MPMoviePlayerController
i AVPlayer
wysyłane podczas odtwarzania wraz z oddzwanianiem opartym na zegarze, które monitorują pozycję odtwarzania i statystyki wydajności dla celów monitorowania.
Patrząc na notatki Apple, z pewnością spodziewałbym się otrzymać pierwszy typ wywołania zwrotnego, aby aplikacja mogła odpowiedzieć na MPMoviePlayerPlaybackStateDidChangeNotification
, MPMoviePlayerPlaybackDidFinishNotification
i MPMoviePlayerLoadStateDidChangeNotification
, ale tak się nie stanie.
Czy ktoś wie, czy można je odbierać podczas odtwarzania w tle AirPlay, a jeśli tak, to w jaki sposób został osiągnięty?
** Uwaga: aplikacja działa poprawnie podczas pracy na pierwszym planie i otrzymuje mandat za powiadomienie. Dopiero gdy są wypychane na drugi plan i odtwarzane przez AirPlay, powiadomienia nie są odbierane.
Podobnie, wideo odtwarzane jest prawidłowo w tle w trybie AirPlay. Tylko powiadomienia nie są odbierane **
Tak, odtwarzanie dźwięku za pośrednictwem urządzenia działa dobrze. Niestety, potrzebuję AirPlay i wideo, obawiam się. – reddersky
@virorum Jeśli usuniesz funkcję airplay z równania, czy wywołania zwrotne zostaną wywołane? Jeśli tak, to brzmi jak błąd Apple. Inaczej może mmich będzie na tyle uprzejmy, aby udostępnić swój kod;) – Danra
Połączenia są nawiązywane, gdy są na pierwszym planie. Jedynie podczas grania w AirPlay w tle nie działają. Myślę, że może to być jednak sprawa z Apple. – reddersky