Ho un'app che trasmette video dalla rete e la riproduce utilizzando un oggetto MPMoviePlayerController
per la riproduzione sul dispositivo o tramite AirPlay.Risposta alle notifiche MPMoviePlayerController durante la riproduzione multimediale in background
L'app supporta il funzionamento in background e ha l'opzione 'audio' elencata all'interno della chiave UIBackgroundModes
richiesta nel suo file plist.
Durante la riproduzione su AirPlay, l'app può essere spinta con successo sullo sfondo e il video continua a essere riprodotto correttamente. Fin qui tutto bene.
Secondo il Apple documentation:
Compresa la chiave audio racconta i quadri del sistema che dovrebbero continuare a giocare e fare i richiami necessari per l'applicazione ad intervalli appropriati. Se l'app non include questa chiave, qualsiasi audio riprodotto dall'app si interrompe quando l'app si sposta sullo sfondo.
Tuttavia, queste richiamate non vengono eseguite.
L'applicazione utilizza due tipi di callback: quelli associati con le notifiche MPMoviePlayerController
e AVPlayer
inviare durante la riproduzione insieme con richiamate basato timer che controllano la posizione di riproduzione e le statistiche delle prestazioni per scopi di monitoraggio.
guardando le note di Apple, che sarebbe certamente aspettarsi di ricevere il primo tipo di callback in modo che l'applicazione può rispondere a MPMoviePlayerPlaybackStateDidChangeNotification
, MPMoviePlayerPlaybackDidFinishNotification
e MPMoviePlayerLoadStateDidChangeNotification
, ma questo non accade.
Qualcuno sa se è possibile riceverli durante la riproduzione AirPlay in background e, in caso affermativo, come è stato ottenuto?
** Nota: l'app funziona correttamente quando è in esecuzione in primo piano e riceve le notifiche correttamente. È solo quando viene spinto in secondo piano e giocando su AirPlay che le notifiche non vengono ricevute.
Allo stesso modo, il video viene riprodotto correttamente su AirPlay sullo sfondo. Sono solo le notifiche che non vengono ricevute **
Sì, riprodurre l'audio tramite il dispositivo funziona correttamente. Sfortunatamente, sono impaurito AirPlay e i video necessari. – reddersky
@virorum Se si rimuove l'airplay dall'equazione, vengono richiamati i callback? Se è così, suona come un bug di Apple. Altrimenti forse sarà così gentile da condividere il suo codice;) – Danra
Le chiamate vengono fatte quando sono in primo piano. È solo quando giochi su AirPlay sullo sfondo che non lo fanno. Penso che potrebbe essere una cosa Apple però. – reddersky