YouTube iFrame API在iOS 8缓存期间挂起。*特别是在无边框主屏幕Web应用程序中

时间:2015-02-04 18:17:52

标签: ios api iframe youtube buffering

这个问题在stackoverflow上的其他帖子中没有得到足够清楚的描述,并且id喜欢在ios 8上添加到主屏幕的Web应用程序中使用时启动一个专门解决YouTube iFrame API问题的新线程。*来自safari。

在我的网络应用程序中,在运行iOS 8. *(任何高于8的版本)的iPhone上,播放在移动Safari网络浏览器中查看时可以正常工作

我尝试解决的具体问题只发生在将网络应用添加到主屏幕并从那里启动后尝试播放YouTube iframe时。

我将排除发布我的所有代码,例如html标记或完整的JS集合,因为它似乎是多余的;我希望能够做到正确,但如果有人觉得有必要,请回复,我会更新这篇文章。

在页面头部中,我包含必要的元标记,如下所示:

<meta name="apple-mobile-web-app-capable" content="yes"/>

这使得能够“添加到主屏幕”#34;来自移动版Safari并将Web应用程序加载到无边框webview中。

我还在页眉中加载了YouTube API,如下所示:

<script type="text/javascript" src="https://www.youtube.com/iframe_api"></script>

一旦将网络应用程序从Safari添加到主屏幕,启动它就会按预期将Web应用程序加载到无边框的webview中,并根据我的JS在我的代码中通过YouTube iframe API嵌入YouTube视频,如下所示:

var myPlayer = new YT.Player(MY_DIV_TARGET_ID, {
          videoId: MY_YT_VIDEO_ID,
          playerVars: {
      'autohide': 1,
          'autoplay': 0,
          'controls': 0,
          'ps': 'docs',
          'showinfo': 0,
          'color': 'white',
          'modestbranding': 1,
          'iv_load_policy': 3,
          'playsinline': 1,
          'rel': 0,
          'theme': 'dark'
          'enablejsapi': 1
            },
      events: {
        'onReady': onYouTubePlayerReady,
      }
    });

在我的&#34; onYouTubePlayerReady&#34;功能我按照YouTube的说明设置所有事件监听器来跟踪状态和错误:YouTube iFrame API reference

此时,一旦用户按照Apple的要求在嵌入式播放器中物理点击YouTube提供的播放按钮,用户必须通过点击/点击播放按钮来实际触发播放,视频开始缓冲和事件监听器&#34; onStateChange&#34;触发3和/或YT.PlayerState.BUFFERING的结果。所有这些都是预期的行为。

UI也会按预期更新微调器,但播放器此时会挂起,从不播放视频。我可以在safari开发者控制台中的任何地方看到没有错误,我可以使用它来调试此问题。我也无法和/或不知道如何追踪缓冲区的百分比。

我已经在网上孜孜不倦地寻找无法解决的解决方案。

任何帮助都非常受欢迎。

1 个答案:

答案 0 :(得分:0)

Vimeo,DailyMotion和本地提供的HTML5视频也会发生,这些视频已遵循以下原则: https://developer.apple.com/library/mac/documentation/AppleApplications/Reference/SafariWebContent/CreatingVideoforSafarioniPhone/CreatingVideoforSafarioniPhone.html

这个问题已经被iOS8更新引入,但苹果仍然没有解决,现在应该很清楚这个问题(参见有关SO的各种错误报告)。

我正在使用8.2b5进行测试,但此问题仍未解决。

我的感觉是,他们想要强迫您使用Apple生态系统和原生应用来播放视频。

PS:audio

出现同样的问题