Я создал класс, который воспроизводит видео на YouTube (благодаря помощи со стороны людей этого сайта).Зная, когда начинается воспроизведение видеоролика YouTube из UIWebView
Теперь мне интересно, как я узнаю, когда начнется воспроизведение видео на YouTube. Я хочу знать это, поэтому я могу показать индикатор «Подождите, загрузите ...» между видео, которое будет сказано, чтобы играть, и на самом деле он играет.
Я запускаю воспроизведение видео с использованием stringByEvaluatingJavaScriptFromString:
, и, конечно, между мной уходит небольшая задержка с помощью команды javascript для воспроизведения видео и воспроизведения на самом деле.
Я знаком с видео YouTube и JavaScript, поэтому Ive смотрел на это: [https://developer.apple.com/library/mac/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/ObjCFromJavaScript.html], потому что мне интересно, если Javascript слушатель события внутри UIWebView может обнаружить, когда видео YouTube начинает играть (прослушивание для onStateChange
события) и запустите метод Objective C.
Возможно ли это? Как UIWebViews запускает javascript так же, как веб-браузер?
Есть ли более простой/лучший способ сделать это?
Вот мой YouTube класс:
// this is the only property declared in the .h file:
@property (strong, nonatomic) UIView * view
// the rest of this is the .m file:
#import "MyYouTube.h"
@interface MyYouTube()
@property (strong, nonatomic) NSDictionary * contentData;
@property (strong, nonatomic) UIWebView * webView;
@property (nonatomic) int videoOffset;
@end
@implementation MyYouTube
@synthesize view,contentData,webView,videoOffset;
- (MyYouTube*) initIntoView: (UIView*) passedView withContent: (NSDictionary*) contentDict {
NSLog(@"YOUTUBE: begin init");
self=[super init];
videoOffset=0;
view=[[UIView alloc] initWithFrame:passedView.bounds];
[view setBackgroundColor:[UIColor blackColor]];
[view setAutoresizesSubviews:YES];
[view setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];
contentData=contentDict;
NSString * compiledUrl=[[NSString alloc] initWithFormat:@"http://_xxx_.com/app/youtube.php?yt=%@",[contentData objectForKey:@"cnloc"]];
NSURL * url=[[NSURL alloc] initWithString:compiledUrl];
NSURLRequest * request=[[NSURLRequest alloc] initWithURL:url];
webView=[[UIWebView alloc] initWithFrame:passedView.bounds];
[webView loadRequest:request];
[webView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[[webView scrollView] setScrollEnabled:NO];
[[webView scrollView] setBounces:NO];
[webView setMediaPlaybackRequiresUserAction:NO];
[webView setDelegate:self];
NSLog(@"YOUTUBE: self: %@",self);
NSLog(@"YOUTUBE: delegate: %@",webView.delegate);
[view addSubview:webView];
NSLog(@"YOUTUBE: end init");
return self;
}
-(void)webViewDidFinishLoad:(UIWebView*)myWebView {
NSLog(@"YOUTUBE: send play command");
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"playVideo(%d)", videoOffset]];
}
@end
Большое спасибо.
этой прекрасно работает! большое спасибо! – Jimmery
Добро пожаловать, рад, что помог вам :) – Alladinian
Спасибо. Работал и для меня тоже !!!! –