Подтвердить что ты не робот

Автозапуск видео YouTube на iPhone Safari или UIWebView

Возможно ли получить видео с YouTube для автозапуска в Safari и/или UIWebView? Я видел это в приложении для iPhone, в представлении tableview отображаются ячейки, у которых нет значка предварительного просмотра Youtube (достаточно уверен, что это UIWebView Хотя), когда вы нажимаете на ячейку, которая непосредственно переходит к видео.

Можно ли это сделать, подделав кран на видео с YouTube? Если да, то как? Будет ли getElementById() работать с кликом?

4b9b3361

Ответ 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!