iPhone 应用程序中的 YouTube 视频完成通知
Posted
技术标签:
【中文标题】iPhone 应用程序中的 YouTube 视频完成通知【英文标题】:Notification of YouTube video completion in iPhone app 【发布时间】:2011-06-25 06:48:56 【问题描述】:我已经按照 YouTube API 博客的方法 #2 毫无困难地嵌入了 YouTube 视频:
http://apiblog.youtube.com/2009/02/youtube-apis-iphone-cool-mobile-apps.html
有什么方法可以知道视频何时播放完毕(或者用户何时按下电影控制器上的“完成”按钮)?
例如,假设您希望播放播放列表中的每个视频,而无需用户与应用进行交互。是否有任何挂钩何时开始下一个视频?
【问题讨论】:
【参考方案1】:通过smoothlandon 的帖子,这是我为确定YouTube/Safari 窗口是否仍处于活动状态而实施的。我的应用程序非常简单,它只有主窗口和加载的 YouTube/Safari 视图。
viewDidLoad:
activeWindow = [[UIApplication sharedApplication] keyWindow];
windowTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(checkForMedia) userInfo:nil repeats:YES];
- (void) checkForMedia
newWindow = [[UIApplication sharedApplication] keyWindow];
if(newWindow == activeWindow)
NSLog(@"media is not playing");
else
NSLog(@"media is playing");
【讨论】:
【参考方案2】:恐怕你运气不好。大约六个月前,我搜索过同样的东西,得出的结论是当前的 SDK 不可能。我也在堆栈溢出中发布了类似的问题。
https://***.com/questions/4011796/notification-after-video-playback-in-mobile-safari
一般来说,如果你需要这种功能,你必须使用MPMoviePlayerCOntroller,而不是网页视图。即便如此,我认为这个类不支持youtube URL。
【讨论】:
我又试了一次。尽管我找不到任何通知,但您可以使用轮询解决方案。当 YouTube 插件启动时,应用程序的 keyWindow 被切换。当 UIApplication 窗口切换回我的 AppDelegate 的窗口时,我启动了一个计时器并进行监控。 delegate.window == [[UIApplication sharedApplication] keyWindow] 如果它们不同,这意味着 YouTube 视频仍在播放。这不是一个理想的解决方案,但可以解决问题。 很棒的技巧,但在我的情况下没有用,因为窗口会在收到通知之前关闭。 @smoothlandon:请贴一些代码!你的解决方案似乎是我最后的手段。以上是关于iPhone 应用程序中的 YouTube 视频完成通知的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone 的应用程序中播放 youtube/vimeo 视频
iPhone:如何在特定视图中播放 YouTube 视频(而不是全屏)
iPhone 使用 GData 框架将视频上传到 youtube 应用程序