Я пытаюсь реализовать проигрыватель MPMedia для воспроизведения интернет-файлов. До сих пор мне удалось открыть медиаплеер со ссылками на размещенные мной видео. Проблема начинается, когда я пытаюсь загрузить URL, который не отображается напрямую в файл, а вместо этого перенаправляется в файл.
Исходный URL выглядит следующим образом: h * tp: //www.example.com/numbers/numbers/numbers
и когда я помещаю его в свой браузер, он автоматически изменяется на что-то вроде этого: h * tp: //www.example.com/numbers.mp4? To = числа
Когда я использую исходный URL-адрес напрямую, так же, как я делал с прямыми URL-адресами, проигрыватель включается и сразу же выключается, не воспроизводя видео.
Я пробовал NSURLConnection, чтобы получить URL-адрес перенаправления, но я не смог заставить его работать, каким-то образом метод - connection: willSendRequest: redirectResponse: не вызывается. Я думаю, что это может быть потому, что он был удален в iOS 5, но я не знаю никаких альтернатив, и такого рода проблемы действительно недокументированы.
Вот мой код: (Я пропустил инициализацию shortUrl, она работает).
NSLog(@"%@",shortUrl);
redirecionando=TRUE;
NSURLConnection * conection = [[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:shortUrl] delegate:self];
[conection start];
while(self.redirecting);
self.moviePlayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:finalurl];
moviePlayerController.view.frame = self.view.bounds;
[self presentMoviePlayerViewControllerAnimated:moviePlayerController];
moviePlayerController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
moviePlayerController.moviePlayer.shouldAutoplay = YES;
[moviePlayerController.moviePlayer prepareToPlay];
moviePlayerController.moviePlayer.fullscreen=YES;
}
- (NSURLRequest *)connection: (NSURLConnection *)inConnection
willSendRequest: (NSURLRequest *)inRequest
redirectResponse: (NSURLResponse *)inRedirectResponse;
{
finalurl=inRequest.URL;
self.redirecting=FALSE;
return inRequest;
}
Я знаю, что этот последний метод не вызывается, я NSLogged это. Прямо сейчас, когда приведенный выше код выполняется, он просто ждет из-за цикла while.
Кстати, я не могу использовать внешний API для обнаружения перенаправления, например http://longurl.org/, потому что ссылка возвращает токен для устройства, которое запрашивает
это.
Заранее спасибо.