当视频在 UIWebView 中开始或停止时获取通知
Posted
技术标签:
【中文标题】当视频在 UIWebView 中开始或停止时获取通知【英文标题】:Get Notification when a video starts or stops in UIWebView 【发布时间】:2011-11-24 06:46:01 【问题描述】:你好我是新来的目标 - c
我在使用UIWebView
和MPMoviePlayerController
时遇到问题:我的UIWebView
在html 中有一个电影(它是一个本地html 文件),我正在使用html5 和视频标签。
我想要在UIWebView
....中视频开始或停止时收到通知。
我尝试过使用MPMoviePlayerPlaybackDidFinishNotification
,但它不会触发...
我还尝试让我的主要UIViewController
的视图成为我自己的视图,并拦截-didAddSubview:
和-willRemoveSubview:
。但没有成功...
有没有人知道如何从uiwebview
获得通知??
【问题讨论】:
【参考方案1】:您可以观察@"MPAVControllerPlaybackStateChangedNotification"
(对象使用nil
)。此通知未记录在案,因此我不知道 App Store 是否会批准您的应用。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackStateDidChange:)
name:@"MPAVControllerPlaybackStateChangedNotification"
object:nil];
通知在其userInfo
中有键MPAVControllerNewStateParameter
。播放开始前的值似乎为 0,暂停时为 1,播放时为 2,拖动播放滑块时为 3(暂时)。
- (void)playbackStateDidChange:(NSNotification *)note
NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]);
【讨论】:
很棒的建议 - 我经常告诉人们,无法观察网络视图电影播放器的通知 - 哎呀,我猜我错了。 它实际上并不知道它正在观察哪个电影播放器。希望你只有一个可以观察。 :) 如何仅通过通知将视频从播放更改为暂停? 是否有类似上述的替代解决方案? @Susim 你有没有找到任何替代方案?【参考方案2】:我对此进行了很多搜索..这是我找到的用于获取播放结束通知调用的解决方案。 在 iOS6.0 及以上版本测试代码。感谢@Morten。
在 viewDidLoad 添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackDidEnd:)
name:@"MPAVControllerItemPlaybackDidEndNotification"//@"MPAVControllerPlaybackStateChangedNotification"
object:nil];
然后只需添加以下javascript代码webViewDidFinishLoad
委托如下
- (void)webViewDidFinishLoad:(UIWebView *)webView
//http://***.com/a/12504918/860488
[videoView stringByEvaluatingJavaScriptFromString:@"\
var intervalId = setInterval(function() \
var vph5 = document.getElementById(\"video-player\");\
if (vph5) \
vph5.playVideo();\
clearInterval(intervalId);\
\
, 100);"];
- (void)playbackDidEnd:(NSNotification *)note
//do your stuff here
[videoView removeFromSuperview];
videoView.delegate = nil;
videoView = nil;
您将在上面选择的情况下获得playbackDid End 调用,并且可以按照您的要求进行操作。 编码快乐!!
【讨论】:
以上是关于当视频在 UIWebView 中开始或停止时获取通知的主要内容,如果未能解决你的问题,请参考以下文章
UIWebView 和 MPMoviePlayerController
如何在 UIWebview 内的播放器中获取 MPMoviePlayerPlaybackStateDidChangeNotification?