Автозапуск видео YouTube на iPhone Safari или UIWebView
Возможно ли получить видео с YouTube для автозапуска в Safari и/или UIWebView? Я видел это в приложении для iPhone, в представлении tableview отображаются ячейки, у которых нет значка предварительного просмотра Youtube (достаточно уверен, что это UIWebView Хотя), когда вы нажимаете на ячейку, которая непосредственно переходит к видео.
Можно ли это сделать, подделав кран на видео с YouTube? Если да, то как? Будет ли getElementById() работать с кликом?
Ответы
Ответ 1
трюк заключается в том, чтобы найти кнопку в веб-просмотре. Используйте следующий фрагмент.
- (void)loadWebUIViewWithYoutubeLink {
webView.delegate = self;
NSString *htmlString = [NSString stringWithFormat:[NSString
stringWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"YouTubeTemplate" ofType:@"txt"]],
@"b85hn8rJvgw", @"b85hn8rJvgw", nil];
[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://youtube.com"]];
}
- (UIButton *)findButtonInView:(UIView *)view {
UIButton *button = nil;
if ([view isMemberOfClass:[UIButton class]]) {
return (UIButton *)view;
}
if (view.subviews && [view.subviews count] > 0) {
for (UIView *subview in view.subviews) {
button = [self findButtonInView:subview];
if (button) return button;
}
}
return button;
}
- (void)webViewDidFinishLoad:(UIWebView *)_webView {
UIButton *b = [self findButtonInView:_webView];
[b sendActionsForControlEvents:UIControlEventTouchUpInside];
}
Ответ 2
Если вы создаете свой собственный html файл, который использует iframe, а затем вы загружаете webview, то вы можете просто добавить команду
webView.mediaPlaybackRequiresUserAction=FALSE;
и видео будет автовоспроизведено, пока вы уже имеете свое видео YouTube в html, которое уже запускает видео. Файл html можно найти в источнике следующей страницы.
Вид источника: HTTP://tylerbiscoe.com/vb/iphone_player.html. Если вы скопируете и вставьте это в браузер, вы увидите, как будет выглядеть страница iframe. Затем используйте webView для загрузки страницы youTube, а затем используйте приведенную выше команду, чтобы получить Quicktime-плеер, который вызывается ios для автоматического воспроизведения после того, как веб-просмотр будет загружен. На вышеприведенной странице есть три видео, которые уже включены, и все три будут воспроизводиться последовательно друг с другом.
Ответ 3
Да, он работает (все комментарии здесь), но вам нужно использовать старый встроенный src youtube.
Вот так:
http://www.youtube.com/v/%@?version=3&hl=en_US
Где% @- идентификатор видео youtube.
Ответ 4
Я использовал метод Saurabh, но вместо того, чтобы загружать HTML-строку, я смог просто загрузить обычный запрос, а видео все еще было автоматически воспроизведено.
Обязательно установите делегат на нуль, когда вы закрываете веб-просмотр, хотя или продолжаете пытаться воспроизвести.
- (void)loadVideo
{
NSURLRequest *videoReq = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=J-30wYSsFUY&feature=plcp"]];
[_videoWebView setDelegate:self];
[_videoWebView loadRequest:videoReq];
}
//----- ЭТИ 2 ФУНКЦИИ, ПРИНИМАЕМЫЕ ОТ Saurabh Wadhwa ОТВЕТ ------
- (UIButton *)findButtonInView:(UIView *)view {
UIButton *button = nil;
if ([view isMemberOfClass:[UIButton class]]) {
return (UIButton *)view;
}
if (view.subviews && [view.subviews count] > 0) {
for (UIView *subview in view.subviews) {
button = [self findButtonInView:subview];
if (button) return button;
}
}
return button;
}
- (void)webViewDidFinishLoad:(UIWebView *)_webView {
UIButton *b = [self findButtonInView:_webView];
[b sendActionsForControlEvents:UIControlEventTouchUpInside];
}
Ответ 5
Метод "click click", упомянутый выше, работал у меня в iOS6, но только в первый раз. При повторных нагрузках он не запускает видео. Все вещи равны, я полагал, что это проблема кэширования или куки. Оказалось, что очистка файлов cookie для youtube заставила его работать для меня.
for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
NSLog([cookie domain]);
if([[cookie domain] isEqualToString:@".youtube.com"]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}
Надеюсь, это поможет кому-то, кто пытается понять это для iOS6!