Let a questo scenario:

Secondo lei, si dispone di un pulsante. Quando si fa clic, si desidera riprodurre direttamente il video. Al fine, per farlo, si apre la WebView come vista modale della vista:
[self presentModalViewController:videoWebView animated:NO];
Per la vostra WebView, è necessario utilizzare Youtube API per integrare e riprodurre automaticamente il video. Guarda l'esempio di lavoro proposto qui: https://stackoverflow.com/a/15538968
Vedrai che il video viene lanciato in una vista modale della tua vista webview. Un modo per rilevare quando il video è stato rimosso (quando il pulsante "completato" è stato premuto) consiste nell'utilizzare lo viewDidAppear
nella classe di visualizzazione webview. Con questo metodo, la visualizzazione di Webview verrà ignorata ma ... quando questa visualizzazione viene avviata inizialmente, non si desidera ignorarla. È possibile aggiungere una proprietà booleana per evitarlo.
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (_videoLaunched) {
[self dismissModalViewControllerAnimated:YES];
}
}
Nel metodo viewDidLoad
, impostare questa proprietà su NO e nel metodo webViewDidFinishLoad
(metodo delegato di webview) impostarlo SI.
Penso che risponda a una parte della tua domanda.Per quanto riguarda il rilevamento della fine del video, è necessario modificare il file YT_Player.html
per ascoltare le modifiche dello stato.
ytPlayer = new YT.Player('media_area', {height: '100%', width: '100%', videoId: 'SbPFDcspRBA',
events: {'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange}
function onPlayerStateChange(e) {
var result = JSON.parse(event.data);
if (result.info == 0) { // Video end
window.location = "videomessage://end";
}
}
});
Sarà quindi catturare l'evento nella vostra vista WebView e respingerlo in questo modo:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
if ([[url scheme] isEqualToString:@"videomessage"]) {
[self dismissModalViewControllerAnimated:YES];
return YES;
}
return YES;
}
Avete provato con iOS 6? Provato prima, la notifica non sta sparando qui. – fabb
MPMoviePlayerWillExitFullscreenNotification funziona per me su iOS 6. Puoi controllare se funziona per te? – defactodeity
Sfortunatamente, non funziona per me. Forse ha a che fare con il fatto che utilizzo un video Youtube all'interno di un UIWebView? – fabb