如何在 uiwebview iOS 中处理 YouTube 视频事件(开始、结束等)
Posted
技术标签:
【中文标题】如何在 uiwebview iOS 中处理 YouTube 视频事件(开始、结束等)【英文标题】:How to handle YouTube video events (started, finished, etc) in uiwebview iOS 【发布时间】:2011-08-22 21:49:39 【问题描述】:目前,我正在使用新的 iframe API 在 iPad 上的 uiwebview 中嵌入 YouTube 视频,并且无需用户交互即可使其自动播放。 在 iframe API 中描述了如何使用 onstatechange 事件,但在我的应用程序中它似乎不起作用,不幸的是我在 uiwebview 中看不到任何调试。
我只想能够检测到视频何时结束,你有什么建议吗? 有人让它工作吗?
【问题讨论】:
【参考方案1】:您是否尝试过(从文档中)为电影结束的事件分配一个整数?:
onStateChange 只要玩家的状态发生变化,就会触发此事件。 API 传递给您的事件对象的数据属性 事件侦听器函数将指定一个整数,对应于 新玩家状态。可能的数据值为:
-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
【讨论】:
【参考方案2】:要检测视频何时结束,则视频的状态为 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】:希望这个http://code.google.com/apis/youtube/js_api_reference.html#SubscribingEvents可以帮助你
【讨论】:
【参考方案4】:它可能与浏览器中的自动播放策略相关(在移动浏览器中默认禁用)。
如果您的浏览器是 chrome,您可以使用额外的命令行标志 --autoplay-policy=no-user-gesture-required
启动它 - 它对我有用。
【讨论】:
【参考方案5】:您需要为此使用 javascript。
参考此链接:https://developers.google.com/youtube/js_api_reference
【讨论】:
以上是关于如何在 uiwebview iOS 中处理 YouTube 视频事件(开始、结束等)的主要内容,如果未能解决你的问题,请参考以下文章
iOS UIWebView Javascript - 插入数据 - 接收回调?
在iOS 8中如何在UIWebView Player中接收全屏模式的通知?