加载YTPlayerView后会在youtube应用中打开视频

时间:2017-11-03 15:51:04

标签: ios objective-c youtube-api

所以标题几乎总结了我正在加载我的YTPlayerView的情况:

[self.videoView loadWithVideoId:@"youtube id"];

就像在documentation中提到的那样,它可以很好地工作,但是我第二次点击视图时视频会在youtube应用上打开,而不是全屏。

这里有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

经过大量研究后,我没有找到这个问题的答案,所以我决定挖掘YTPlayerView.m文件,看看触摸事件是如何处理的,我发现有两种方法可以做到这一点:

1 - YTPlayerView包含一个webView并覆盖:

- (BOOL)webView:(UIWebView *)webView
    shouldStartLoadWithRequest:(NSURLRequest *)request
                navigationType:(UIWebViewNavigationType)navigationType

这是检查url方案以触发相应操作的完整代码

- (BOOL)webView:(UIWebView *)webView
    shouldStartLoadWithRequest:(NSURLRequest *)request
                navigationType:(UIWebViewNavigationType)navigationType {
  if ([request.URL.host isEqual: self.originURL.host]) {
    return YES;
  } else if ([request.URL.scheme isEqual:@"ytplayer"]) {
    [self notifyDelegateOfYouTubeCallbackUrl:request.URL];
    return NO;
  } else if ([request.URL.scheme isEqual: @"http"] || [request.URL.scheme isEqual:@"https"]) {
    return [self handleHttpNavigationToUrl:request.URL];
  }
  return YES;
}

在我的情况下,此函数 handleHttpNavigationToUrl 返回一个bool,指示视频是否应在应用程序或youtube应用程序上打开。 我评论了这些在应用程序上打开视频的行,现在一切正常。

[[UIApplication sharedApplication] openURL:url];
    return NO;

这是一个快速解决方案而且不是很好我知道但在我的情况下我没有选择第二个解决方案会好得多。

2 - 首先在youtube网址中出现问题,就像使用嵌入网址一样,这个问题不会发生, 因此,请尝试使用其他方法通过使用embed url加载视频,格式为:

http(s)://www.youtube.com/embed/ [视频ID]?[参数]

所以只需尝试使用 loadVideoByURL 并使用embed url而不是 loadWithVideoId 。 我希望Voila有所帮助。