Ingreso a mi servidor usando un SOAP web service
. Una vez que haya iniciado sesión, muchos de los archivos que estoy viendo solo están disponibles para el usuario que inició sesión, por lo que iOS debe crear una sesión en NSURL
o algo así.iOS: Reproducción de video que necesita autenticación funciona en QuickLook pero no en MPMoviePlayerViewController
Al intentar obtener una vista previa de un archivo de video usando MPMoviePlayerViewController
, no funcionará, solo carga el control de vista, luego lo descarta.
Si uso QuickLook
funciona, probablemente porque primero descargo el video localmente, luego lo veo.
Pero, no quiero hacerlo de esta manera, quiero transmitir el video usando MPMoviePlayerViewController
porque no quiero que el usuario tenga que descargar un archivo de video completo. He visto publicaciones sobre el uso de NSURLCredential
, pero eso no parece funcionar para mí. Solía (añadido mi propia información personal obviamente):
/**
* Play media session
*
* @version $Revision: 0.1
*/
- (void)playMediaWithURL:(NSString *)mediaURL {
// Authenticate
NSURLCredential *credential = [NSURLCredential credentialWithUser:@"myusername"
password:@"mypassword"
persistence:NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc]
initWithHost:@"mysite.com"
port:80
protocol:@"http"
realm:nil
authenticationMethod:NSURLAuthenticationMethodDefault];
[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential forProtectionSpace:protectionSpace];
// The movie player
NSURL *movieURL = [NSURL URLWithString:[mediaURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
MPMoviePlayerViewController *tempPlayer = [[MPMoviePlayerViewController alloc]initWithContentURL:movieURL];
// Add observer
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
// Properties
tempPlayer.moviePlayer.allowsAirPlay = YES;
tempPlayer.moviePlayer.shouldAutoplay = YES;
tempPlayer.moviePlayer.useApplicationAudioSession = NO;
[self presentMoviePlayerViewControllerAnimated:tempPlayer];
[tempPlayer.moviePlayer play];
}//end
Dado que el vídeo es sólo visible para un usuario conectado, si la URL de vídeo se accede por un usuario público, se les presenta un formulario HTML para iniciar sesión . ¿No funciona NSURLCredential
en este caso?
¿Por qué todas las llamadas a NSURLConnection
trabajo, usando mi registran en las credenciales (como descargar el video), pero no parece MPMoviePlayerViewController
utilizar esas mismas credenciales, y se niega a reproducir el vídeo (probablemente porque se pone el inicio de sesión página)?
¿Hay alguna solución a esto?
+1 para una buena pregunta - curioso sobre las respuestas. En términos generales, MPMoviePlayerController (como AVPlayer en el que el primero se basa) no parece hacer mucho uso de tales funcionalidades de redes compartidas de alto nivel. – Till
Estoy usando uno de mis tickets de soporte técnico para desarrolladores de iOS y envié esta pregunta a Apple. Veremos lo que dicen .. –
¿Alguna noticia sobre esto? – Till