iOS上embedded式YouTubevideo的媒体callback
我将YouTubevideoembedded到iOS应用的UIWebView
中。 我在此YouTube博客post中使用“方法2”来embeddedvideo。 这很好,除了因为iOSpipe理媒体播放器,我不能确定video是播放还是播放完成。 我不想在播放video时将视图与另一个视图交换,但是我不认为有一个好方法可以确定。 有任何想法吗? 如果有一种方法可以获得JavaScriptcallback,那么这将起作用,或者如果有一种方法可以使用HTML5 <video>
标记embeddedYouTubevideo,那么这也可以工作(我已经试过了,没有取得成功)。
你可以注入JavaScript的UIWebView
(见http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview )…其他有趣的东西关于JavaScript和UIWebView
可以在这里和这里find。
尝试一起使用这个实验性的YouTube API(请参阅http://code.google.com/apis/youtube/iframe_api_reference.html )…这应该能够得到你想要的。
另一个有用的资源,这从JavaScript到你的代码callback是在这里 。
只需添加观察者为MPAVControllerPlaybackStateChangedNotification。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackStateDidChange:) name:@"MPAVControllerPlaybackStateChangedNotification" object:nil];
然后开始倾听:
- (void)playbackStateDidChange:(NSNotification *)note { NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]); int playbackState = [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]; switch (playbackState) { case 1: //end ; break; case 2: //start ; break; default: break; } }
探索其他国家,如果你好奇。 另外,对其他通知感兴趣的所有人都可以注册以查看全部内容:
CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), NULL, noteCallbackFunction, NULL, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
然后检查即将发生的事情:
void noteCallbackFunction (CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { NSLog(@"notification name: %@", name); NSLog(@"notification info: %@", userInfo); }
玩的开心!
对于iPhone我使用了一些棘手的方法。 当video模式视图控制器被解散时,您可能会收到通知。
-(void) onUIWebViewButtonTouch:(id) sender { self.isWatchForNotifications = YES; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowNowVisible:) name:UIWindowDidBecomeVisibleNotification object:self.view.window ]; } - (void)windowNowVisible:(NSNotification *)note { if (isWatchForNotifications == YES) { //modal viewcontroller was dismissed } self.isWatchForNotifications = NO; }
- 用JavaScript检测iOS Safari的震动?
- iOS GCD:任何全局队列和具有后台优先级(DISPATCH_QUEUE_PRIORITY_BACKGROUND)之间的区别?
- 如何使cocoa懂得我的iPhone应用程序不是英文的?
- 尝试构build用于iOS的SSCrypto框架时构build失败
- UILabel导致应用程序在添加到视图时崩溃(仅限Xcode 6和iOS 8)
- 导航控制器和视图控制器之间的区别?
- NSTimer,NSTask,NSThread和NSRunloop之间的基本区别是什么?
- 使用NSPredicate比较两个arrays
- 在调用completeTransition之后,导航栏被调整:在自定义转换中