我相信这可以通过新的iOS7工作JavaScript核心框架 http://blog.bignerdranch.com/3784-javascriptcore-and-ios-7/(虽然我没有亲自测试过)。
我已经测试过并且似乎工作正常的是这种方法:
您可以拥有一个计时器,而不是在不同的事件更改上注册侦听器queries玩家每秒的状态。
首先,您可以在玩家类上定义一些状态(对应于YouTube 的状态 https://developers.google.com/youtube/js_api_reference#Playback_status)(在头文件中):
typedef NS_ENUM(NSInteger, YoutubeVideoState){
YOUTUBE_VIDEO_STATE_UNSTARTED = -1,
YOUTUBE_VIDEO_STATE_ENDED = 0,
YOUTUBE_VIDEO_STATE_PLAYING = 1,
YOUTUBE_VIDEO_STATE_PAUSED = 2,
YOUTUBE_VIDEO_STATE_BUFFERING = 3,
YOUTUBE_VIDEO_STATE_VIDEO_CUED = 5
};
那么你可以有一个readonly
属性来获取状态(也在头文件中):
@property (nonatomic, readonly) YoutubeVideoState state;
其实施方式如下:
- (YoutubeVideoState)state
{
return (YoutubeVideoState)[[self.webView stringByEvaluatingJavaScriptFromString:@"getPlayerState()"] integerValue];
}
现在,您可以从实例中请求获取每个计时器调用中的当前状态,例如:
YoutubeVideoState currentState = myPlayerInstance.state;
并可能通过以下方式决定您的下一步行动switch
or an if
陈述:
if (currentState == YOUTUBE_VIDEO_STATE_PLAYING) {
// Start your engines!
}