Ios YTPlayer将重定向到OAuth2URL并显示';请待命';

Ios YTPlayer将重定向到OAuth2URL并显示';请待命';,ios,objective-c,youtube-api,youtube-livestreaming-api,Ios,Objective C,Youtube Api,Youtube Livestreaming Api,我正在尝试使用iOS应用程序中播放的实时流 我使用了简单的代码,只将“videoId”改为“w-T2LJ_qLiw”,这是YouTube上的实时视频 但当加载视频时,应用程序将打开Safari并重定向到URL,如下所示: 及 然后将加载并播放视频,但覆盖的视频将显示“请待命” 如果视频不是“直播”,则视频播放效果良好 我昨天以前试过,效果很好。球员怎么了? 我需要通过代码控制视频的动作,如播放、暂停、重新加载。 有什么我可以解决的吗?找到解决方案了 通过修改方法停止应用跳出 - (BOOL)

我正在尝试使用iOS应用程序中播放的实时流

我使用了简单的代码,只将“videoId”改为“w-T2LJ_qLiw”,这是YouTube上的实时视频

但当加载视频时,应用程序将打开Safari并重定向到URL,如下所示:

然后将加载并播放视频,但覆盖的视频将显示“请待命”

如果视频不是“直播”,则视频播放效果良好

我昨天以前试过,效果很好。球员怎么了? 我需要通过代码控制视频的动作,如播放、暂停、重新加载。
有什么我可以解决的吗?

找到解决方案了

通过修改方法停止应用跳出

- (BOOL)handleHttpNavigationToUrl:(NSURL *) url
来自YTPlayerView.m

改为:

if (ytMatch || adMatch) {  
     return YES;  
  } else {  
//    [[UIApplication sharedApplication] openURL:url];  
//    return NO;  
      return YES;  
  }  
或者删除此方法,只需编写

return YES

这种方式没有显示“请待命…”。

尽管周義棠'YouTube的解决方案可能有效,它违反了YouTube的服务条款。我已经修改了
handleHttpNavigationToUrl:
方法,在将用户带出UIWebView进入Safari之前检查这两个额外的URL

这是我的工作解决方案:

// YTPlayerView.m

// ...

NSString static *const kYTPlayerOAuthRegexPattern = @"^http(s)://accounts.google.com/o/oauth2/(.*)$";
NSString static *const kYTPlayerStaticProxyRegexPattern = @"^https://content.googleapis.com/static/proxy.html(.*)$";

// ...

- (BOOL)handleHttpNavigationToUrl:(NSURL *) url {
  // Usually this means the user has clicked on the YouTube logo or an error message in the
  // player. Most URLs should open in the browser. The only http(s) URL that should open in this
  // UIWebView is the URL for the embed, which is of the format:
  //     http(s)://www.youtube.com/embed/[VIDEO ID]?[PARAMETERS]
  NSError *error = NULL;
  NSRegularExpression *ytRegex =
      [NSRegularExpression regularExpressionWithPattern:kYTPlayerEmbedUrlRegexPattern
                                                options:NSRegularExpressionCaseInsensitive
                                                  error:&error];
  NSTextCheckingResult *ytMatch =
      [ytRegex firstMatchInString:url.absoluteString
                        options:0
                          range:NSMakeRange(0, [url.absoluteString length])];

  NSRegularExpression *adRegex =
      [NSRegularExpression regularExpressionWithPattern:kYTPlayerAdUrlRegexPattern
                                                options:NSRegularExpressionCaseInsensitive
                                                  error:&error];
  NSTextCheckingResult *adMatch =
      [adRegex firstMatchInString:url.absoluteString
                        options:0
                          range:NSMakeRange(0, [url.absoluteString length])];

  NSRegularExpression *oauthRegex =
      [NSRegularExpression regularExpressionWithPattern:kYTPlayerOAuthRegexPattern
                                              options:NSRegularExpressionCaseInsensitive
                                                error:&error];
  NSTextCheckingResult *oauthMatch =
    [oauthRegex firstMatchInString:url.absoluteString
                           options:0
                             range:NSMakeRange(0, [url.absoluteString length])];

  NSRegularExpression *staticProxyRegex =
    [NSRegularExpression regularExpressionWithPattern:kYTPlayerStaticProxyRegexPattern
                                              options:NSRegularExpressionCaseInsensitive
                                                error:&error];
  NSTextCheckingResult *staticProxyMatch =
    [[staticProxyRegex firstMatchInString:url.absoluteString
                                  options:0
                                    range:NSMakeRange(0, [url.absoluteString length])];

  if (ytMatch || adMatch || oauthMatch || staticProxyMatch) {
    return YES;
  } else {
    [[UIApplication sharedApplication] openURL:url];
    return NO;
  }
}
我还建议将该项目的GitHub更改为PR


2015年6月10日编辑:从今天起,此修改已合并到代码库中。

好问题!我试着玩了一下,我发现这段视频有点强迫OAuth调用。我在项目的GitHub页面上提交了一个问题。你也可以看到我是如何强迫视频在那里播放的。我会让你知道,如果有人从谷歌跟进这个问题。谢谢日本航空公司!我今天早上试过了。不再重定向,但错误显示像您在GitHub发布的一样。有趣的是,若我使用付费的直播视频ID,那个就是付费频道,它现在就可以正常工作了。(是的,昨天甚至付费频道重定向。)看起来YouTube团队当时已经修复了API。看起来视频现在正在运行,你能验证吗?它现在不工作,仍然需要一些解决方案。也许你可以在GitHub上重新发布它。在OSX上尝试使用Chrome流式传输某些实时事件时也会出现这种情况。这里有什么解决办法吗?我们正在使用YT javascript api嵌入实时视频。同样的视频在3-4周前就可以使用了。感谢朋友“Nick Yu”提供的解决方案。JAL-这在GitHub上很常见。这确实不是一个好的解决方案,因为如果用户点击视频上的YouTube图标,它会阻止用户访问YouTube。这违反了YouTube的服务条款。我很快会发布一个更好的答案。