如何检测何时播放嵌入式YouTube视频?

时间:2019-07-03 19:10:31

标签: nativescript

在我的有角度的Nativescript iOS应用中,我设置了一个网络视图来播放youtube视频。按照类似于此问题here的方法,我可以使用YouTube Iframe API来自动加载和播放youtube视频。 但是如何检测视频实际开始播放的时间(加载后)?

Iframe API具有用于此目的的事件,例如“ onStateChange”。但是,由于我的youtube代码“卡在”了Web视图中,因此当该Web视图中的事件触发时,我目前无法读取。

在Nativescript中,有一个nativescript-webview-interface插件可用于此目的,但我无法使其正常工作。我把我的代码放在下面。 如果这是可行的方法,那么使它正常工作的正确代码是什么?

(我不想使用nativescript-youtube插件,因为这会带来youtube的配额,该配额通常会不断缩小。)


我尝试过的代码: 为了激活youtube播放器,我已经将所有相关的youtube代码放在了webview中。该功能可以播放视频,但尚未获得播放器何时开始播放的事件。要执行我想做的事情,我需要某种方式将该代码插入我的应用程序,而不必将其捕获在Webview中。或者,可以通过某种方式在Webview内部进行交流。

要尝试与Webview进行通信,我尝试了nativescript-webview-plugin:

$ tns plugin add nativescript-webview-interface

html:

<web-view src="{{youtubeCode}}"  #webView ></web-view>

ts:

import {WebView, LoadEventData} from "tns-core-modules/ui/web-view";
let webViewInterfaceModule = require('nativescript-webview-interface');
...
export class ...{
  @ViewChild('webView') webView: ElementRef;

  public youtubeCode = [code that youtube provides in its IFrame API]

  ngOnInit(): void {
    this.setupWebViewInterface();
  }


  setupWebViewInterface() {
    let webView: WebView = this.webView.nativeElement;

    this.oWebViewInterface = new webViewInterfaceModule.WebViewInterface(webView, '~/www/index.html');

    this.youtubeListen()
  }..

  youtubeListen(){
    this.oWebViewInterface.on('onStateChange', (eventData)=>{  //'onStateChange' is the event provided in the Youtube Iframe API
        console.log('event data = ' + eventData)  //***this is the key part I want to work.
   });
 }

结果:ERROR TypeError: undefined is not an object (evaluating 'this.webView.ios.constructor')

这是插件的index.ios.js文件中的问题。如果我将违规行注释掉,那么错误就消失了,但是nothing happens ..

0 个答案:

没有答案