iPhone的Safari或UIWebView上的Youtube视频自动播放

时间:2010-06-09 23:32:09

标签: javascript iphone uiwebview

是否可以在Safari和/或UIWebView上自动播放YouTube视频?我在iPhone应用程序中看到过这种情况,tableview显示没有Youtube预览图标的单元格(非常确定它是UIWebView虽然),当你点击单元格时它直接进入视频。

这可以通过在youtube视频上点击一下来完成吗?如果是这样,怎么样?请问getElementById()。点击工作吗?

5 个答案:

答案 0 :(得分:30)

诀窍是在webview中找到按钮。使用以下代码段。

- (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];
}

答案 1 :(得分:7)

如果您创建自己的使用iframe的html文件,然后将webview加载到那个,那么您只需输入命令

webView.mediaPlaybackRequiresUserAction=FALSE; 

只要您已经在html中播放了youtube视频,视频就会自动播放视频。可以在以下页面的源代码中找到html文件。 视图-出处:http://tylerbiscoe.com/vb/iphone_player.html。如果您将其复制并粘贴到浏览器中,则可以看到iframe页面的外观。然后使用webView加载youTube页面,然后使用上面的命令获取ios调用的quicktime播放器,在webview完成加载后自动播放。上面的页面已经包含了三个视频,这三个视频将相互串联播放。

答案 2 :(得分:2)

是的,它有效(所有评论都在这里),但你必须使用youtube old embed src。

像这样:

http://www.youtube.com/v/%@?version=3&hl=en_US

其中%@是youtube视频ID。

答案 3 :(得分:0)

我使用了Saurabh的方法,但我没有加载HTML字符串,而是加载了正常的请求,视频仍然自动播放。

确保在关闭webview时将委托设置为nil,否则它将继续尝试播放。

- (void)loadVideo
{
        NSURLRequest *videoReq = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=J-30wYSsFUY&feature=plcp"]];
        [_videoWebView setDelegate:self];
        [_videoWebView loadRequest:videoReq];
}
  

// ----- 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];
}

答案 4 :(得分:0)

上面提到的“按钮点击”方法在iOS6中适用于我,但仅限第一次使用。重复加载后,它将无法启动视频。在所有条件相同的情况下,我认为它必须是缓存问题或cookie。原来清除youtube的cookie让它对我有用。

for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
      NSLog([cookie domain]);
      if([[cookie domain] isEqualToString:@".youtube.com"]) {

          [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
      }
}

希望这可以帮助其他人试图为iOS6解决这个问题!