MPMoviePlayer setCurrentPlaybackTime iOS

Uso MPMoviePlayer para reproducir mi video, el problema que tengo es cuando el usuario presiona el button de inicio del dispositivo, guardo la position actual del video, que cuando comía la aplicación nuevamente, me gustaría que comenzara desde donde se fue , por lo que uso la function setCurrentPlaybackTime , funciona perfectamente en iOS 5, pero no en iOS 5.1, donde el video comienza desde el principio.

¿Algún cuerpo tiene una solución para este tipo de problema?

Mi problema se resuelve y explicaré lo que he hecho hasta ahora.

Cuando no pude encontrar una solución / explicación de ese comportamiento (lo que me parece extraño) empiezo a hacer mucho y mucho logging, así que lo que noté es cuando logging la position actual que siempre obtengo (en iOS 5.1)

currentPlaybackTime = nan 

pero en iOS 5 obtuve un valor normal de 0.00000

así que hice un timer (que se repite) para registrar cada vez la hora actual, así que me di count de que está cambiando de nan a 0.00000 después de un time

La conclusión que hice es que tengo que esperar un poco (no entiendo por qué) antes de configurar PlaybackTime, y así es, después de esperar 1 ms (1/1000 s ) y funciona.

¿Intentaste usar seekToTime (solo AvPlayer) en lugar de setCurrentPlaybackTime?

como se sugiere aquí:
¿Por qué MPMoviePlayerController setCurrentPlaybackTime va al momento equivocado?

Nota: esta solución es para AvPlayer en lugar de MPMoviePlayer (incluso difícil no se indica en el enlace de la list). Pero esperaría respuestas adicionales antes de cambiar a AvPlayer.

Debemos establecer el currentPlaybackTime después de recibir la notificación MPMoviePlayerLoadStateDidChangeNotification.

Para saber si el moviePLayer está cargado, primero debe registrarse para MPMoviePlayerLoadStateDidChangeNotification

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieLoadStateDidChange:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; 

Una vez que se carga el reproductor de películas, se llamará a loadLoadStateDidChange: a continuación, searchá MPMovieLoadStatePlaythroughOK load state y establecerá currentPlaybackTime.

 - (void)movieLoadStateDidChange:(NSNotification *)notification { MPMoviePlayerController *player = notification.object; MPMovieLoadState loadState = player.loadState; /* Enough data has been buffenetworking for playback to continue uninterrupted. */ if (loadState & MPMovieLoadStatePlaythroughOK) { //should be called only once , so using self.videoLoaded - only for first time movie loaded , if requinetworking. This function wil be called multiple times after stalled if(!self.videoLoaded) { self.moviePlayerController.currentPlaybackTime = self.currentPlaybackTime; self.videoLoaded = YES; } } }