Я захожу на свой сервер, используя SOAP web service
. После входа в систему многие файлы, которые я просматриваю, доступны только зарегистрированному пользователю, поэтому iOS должна создать сеанс в NSURL
или в другом месте.
При попытке просмотра видеофайла с помощью MPMoviePlayerViewController
он не будет работать, он просто загружает viewController, а затем закрывает его.
Если я использую QuickLook
, это работает, возможно потому, что сначала я загружаю видео локально, а затем просматриваю его.
Но я не хочу делать это таким образом, я хочу транслировать видео, используя MPMoviePlayerViewController
, потому что я не хочу, чтобы пользователю приходилось загружать весь видеофайл. Я видел сообщения об использовании NSURLCredential
, но это не работает для меня. Я использовал (добавил свою личную информацию, очевидно):
/**
* 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
Поскольку это видео доступно для просмотра только вошедшему в систему пользователю, если к URL-адресу видео обращается общедоступный пользователь, ему предоставляется форма HTML для входа в систему. NSURLCredential
не работает в этом случае?
Почему все звонки на NSURLConnection
работают, используя мои учетные данные (например, загрузку видео), но MPMoviePlayerViewController
, похоже, не использует те же учетные данные и отказывается воспроизводить видео (возможно, потому что оно получает страницу входа)?
Есть ли решение для этого?