2011-11-24 24 views
5

Xin chào tôi mới để khách quan - cNhận thông báo khi một đoạn video bắt đầu hoặc dừng trong UIWebView

Tôi đang gặp một vấn đề với các UIWebViewMPMoviePlayerController: My UIWebView có một bộ phim bên trong html (đó là một html địa phương tệp), tôi đang sử dụng html5 và thẻ video cho video.

Tôi muốn nhận thông báo khi video bắt đầu hoặc dừng trong UIWebView ....

Tôi đã cố gắng sử dụng MPMoviePlayerPlaybackDidFinishNotification, nhưng nó không cháy ...

Tôi cũng đã cố gắng để làm cho chính UIViewController của tôi xem chế độ xem của riêng tôi và chặn -didAddSubview:-willRemoveSubview:. nhưng không thành công ...

Có cơ quan nào biết cách nhận thông báo từ uiwebview ??

Trả lời

19

Bạn có thể quan sát @"MPAVControllerPlaybackStateChangedNotification" (sử dụng nil cho đối tượng). Thông báo này không được tài liệu nên tôi không biết liệu App Store có chấp thuận ứng dụng của bạn hay không.

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(playbackStateDidChange:) 
    name:@"MPAVControllerPlaybackStateChangedNotification" 
    object:nil]; 

Thông báo có khóa MPAVControllerNewStateParameter trong userInfo. Giá trị có vẻ là 0 trước khi bắt đầu phát lại, 1 khi nó bị tạm dừng, 2 khi đang phát và 3 (trong giây lát) khi bạn kéo thanh trượt phát lại.

- (void)playbackStateDidChange:(NSNotification *)note 
{ 
    NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]); 
} 
+0

lời khuyên tuyệt vời - tôi thường nói với mọi người rằng một người xem phim trên web không thể quan sát được thông báo - gee, tôi đoán là đã sai rồi. – Till

+0

Nó thực sự không biết trình phát phim nào đang quan sát. Hy vọng rằng bạn chỉ có một để quan sát. :) –

+0

cách thay đổi video từ đang phát sang bị tạm dừng, chỉ từ thông báo? – lakesh

1

Tôi đã tìm kiếm rất nhiều về điều này..Đây là giải pháp mà tôi đã tìm thấy để nhận cuộc gọi thông báo kết thúc phát lại. Mã thử nghiệm trên iOS6.0 trở lên. Tất cả là nhờ @Morten.

Trong viewDidLoad thêm quan sát viên

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(playbackDidEnd:) 
name:@"MPAVControllerItemPlaybackDidEndNotification"//@"MPAVControllerPlaybackStateChangedNotification" 
object:nil]; 

Sau đó, chỉ cần thêm sau mã javascript webViewDidFinishLoad đại biểu như sau

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    //http://stackoverflow.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; 
} 

Bạn sẽ nhận được playbackDid Cuối cuộc gọi ở trên được lựa chọn và có thể làm bất cứ điều gì là yêu cầu của bạn. Happy Coding !!

+0

thanh Tìm kiếm âm lượng không hiển thị trong iOS 7 ... !! bất kỳ ý tưởng??? –

+0

không có phiên bản nhanh? –

Các vấn đề liên quan