如何在uiwebview iOS中处理YouTube视频事件(已启动,已完成等)

时间:2011-05-11 00:28:37

标签: ios events iframe uiwebview youtube

目前,我正在使用新的iframe API在YouTube上的uiwebview中嵌入YouTube视频,并且我已经能够在没有用户交互的情况下自动播放。 在iframe API中,它描述了如何使用onstatechange事件但在我的应用程序中它似乎不起作用,不幸的是我在uiwebview中看不到任何调试。

我只是希望能够检测到视频何时结束,您对此有任何建议吗? 有没有人让它上班?

5 个答案:

答案 0 :(得分:14)

您是否尝试(从文档中)为电影结束事件分配一个整数?:

  

onStateChange只要玩家的状态发生变化,就会触发此事件。   API传递给您的事件对象的data属性   event listener函数将指定一个对应的整数   新玩家状态。可能的数据值是:

-1 (unstarted)
0 (ended)
1 (playing)
2 (paused)
3 (buffering)
5 (video cued).
  

当玩家首次加载视频时,它将播放未启动的视频   (-1)事件。当视频被提示并准备好播放时,播放器将会播放   播放视频提示(5)事件。在您的代码中,您可以指定   整数值或您可以使用以下命名空间之一   变量:

YT.PlayerState.ENDED
YT.PlayerState.PLAYING
YT.PlayerState.PAUSED
YT.PlayerState.BUFFERING
YT.PlayerState.CUED

所以,比如:

if(event.data==YT.PlayerState.ENDED){ 
//do stuff here
                }

答案 1 :(得分:1)

答案 2 :(得分:0)

要检测视频何时结束,则视频的状态为0或YT.PlayerState.ENDED

这是jsfiddle a link的链接!

<!DOCTYPE html>
<html>

  <head>
    <meta charset="UTF-8">
    <title>Page 1</title>
  </head>

  <body>

    <h1>Video page</h1>
    <br>


    <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
    <div id="player"></div>

    <script>
      // 2. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;

      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: 'ussCHoQttyQ',
          playerVars: {
            'autoplay': 0,
            'controls': 0,
            'showinfo': 0,
            'rel': 0
          },
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
      }

      // 5. The API calls this function when the player's state changes.
      // The function indicates that when playing a video (state=1),
      // -1 unstarted 
      // 0 ended 
      // 1 playing
      // 2 paused
      // 3 buffering
      // 5 video cued
      var done = false;

      function onPlayerStateChange(event) {
        console.log(event);
        if (event.data == YT.PlayerState.ENDED) {
          alert(1);
        }
      }

    </script>




  </body>

</html>

答案 3 :(得分:0)

它可能与浏览器中的自动播放策略相关联(在移动浏览器中默认为禁用)。

如果您的浏览器是Chrome浏览器,则可以使用其他命令行标记--autoplay-policy=no-user-gesture-required来启动它-对我有用。

答案 4 :(得分:-1)

你需要为此使用JavaScript。

请参阅此链接:https://developers.google.com/youtube/js_api_reference