【问题标题】:YTPlayerView once loaded opens the video in youtube appYTPlayerView 加载后会在 youtube 应用中打开视频
【发布时间】:2018-04-16 10:01:23
【问题描述】:

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

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

就像documentation 中提到的那样,它运行良好,但是当我第二次点击视图时,视频有时会在 youtube 应用上打开,而不是全屏。

这里有什么帮助吗?

【问题讨论】:

    标签: ios objective-c youtube-api


    【解决方案1】:

    经过大量研究,我没有找到这个问题的答案,所以我决定深入研究 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 返回一个布尔值,指示视频是否应该在应用程序或 youtube 应用程序上打开。 我已经评论了这些在应用程序上打开视频的行,现在一切正常。

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

    这是一个快速解决方案,我知道这不是一个好方法,但就我而言,我别无选择,但第二种解决方案要好得多。

    2- 问题首先出在 youtube url 中,如果您使用的是嵌入 url,则不会出现此问题, 因此,请尝试使用其他方法通过嵌入 url 加载视频,其格式为:

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

    所以只需尝试使用 loadVideoByURL 并使用嵌入 url 而不是 loadWithVideoId。 瞧,我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 1970-01-01
      • 2019-12-27
      • 2019-01-16
      • 2017-07-08
      • 2015-10-29
      • 2018-04-14
      • 2016-03-23
      • 1970-01-01
      相关资源
      最近更新 更多