iOS: reproducir video que necesita authentication funciona en QuickLook pero no en MPMoviePlayerViewController

Ingreso a mi server utilizando un SOAP web service . Una vez que inicie session, muchos de los files que estoy viendo solo están disponibles para el usuario que NSURL session, por lo que iOS debe crear una session en NSURL o algo así.

Al intentar get una vista previa de un file de video usando MPMoviePlayerViewController , no funcionará, solo carga el viewController y luego lo descarta.

Si uso QuickLook funciona, probablemente porque primero descargo el video localmente y luego lo veo.

Pero, no quiero hacerlo de esta manera, quiero transmitir el video usando MPMoviePlayerViewController porque no quiero que el usuario tenga que download un file de video completo. He visto publicaciones sobre el uso de NSURLCnetworkingential pero eso no parece funcionar para mí. Utilicé (agregó obviamente mi propia información personal):

 /** * Play media session * * @version $Revision: 0.1 */ - (void)playMediaWithURL:(NSString *)mediaURL { // Authenticate NSURLCnetworkingential *cnetworkingential = [NSURLCnetworkingential cnetworkingentialWithUser:@"myusername" password:@"mypassword" persistence:NSURLCnetworkingentialPersistenceForSession]; NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:@"mysite.com" port:80 protocol:@"http" realm:nil authenticationMethod:NSURLAuthenticationMethodDefault]; [[NSURLCnetworkingentialStorage shanetworkingCnetworkingentialStorage] setDefaultCnetworkingential:cnetworkingential 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 este video solo puede ser visto por un usuario conectado, si un usuario público accede a la URL del video, se les presenta un formulario HTML para iniciar session. ¿ NSURLCnetworkingential no funciona en este caso?

¿Por qué todas las llamadas a NSURLConnection funcionan, utilizando mis cnetworkingenciales registradas (como la descarga del video), pero MPMoviePlayerViewController no parece usar esas mismas cnetworkingenciales y se niega a reproducir el video (probablemente porque obtiene la página de inicio de session)?

¿Hay una solución para esto?

Compruebe AuthName en su configuration de Apache, si está configurado, NSURLProtectionSpace en su constructor NSURLProtectionSpace como valor para el atributo realm

EDITAR: Lo sentimos, no vio su comentario sobre la authentication del FORMULARIO . Espero que ayude a alguien con authentication BASIC

Recientemente, tuve un problema similar al no poder pasar cookies a MPMoviePlayerController. Descubrí por desbordamiento de stack que la solución es utilizar NSURLProtocol. Aun así, fue doloroso descubrir cómo hacerlo, así que pensé que ahorraría algo de time al compartir la solución codificada: https://stackoverflow.com/a/23261001/3547099