Nativescript 如何检测嵌入的Youtube视频何时播放?

Nativescript 如何检测嵌入的Youtube视频何时播放?,nativescript,Nativescript,更新(2020年7月):我得到了这个版本的大部分工作版本。见我对相关问题的回答 在我的angular Nativescript iOS应用程序中,我设置了一个网络视图来播放youtube视频。按照类似于这个问题的方法,我可以使用youtube自动加载和播放youtube视频但如何检测视频何时开始播放(加载后)? iframeapi有用于此目的的事件,如“onStateChange”。但是,由于我的youtube代码“卡”在webview中,我目前无法读取该webview中触发的事件 在Nati

更新(2020年7月):我得到了这个版本的大部分工作版本。见我对相关问题的回答


在我的angular Nativescript iOS应用程序中,我设置了一个网络视图来播放youtube视频。按照类似于这个问题的方法,我可以使用youtube自动加载和播放youtube视频但如何检测视频何时开始播放(加载后)?

iframeapi有用于此目的的事件,如“onStateChange”。但是,由于我的youtube代码“卡”在webview中,我目前无法读取该webview中触发的事件

在Nativescript中,有一个Nativescript webview接口插件用于此目的,但我无法让它工作。我已经把代码放在下面了如果是这样,那么正确的代码是什么

(我不想使用nativescript youtube插件,因为这会带来youtube的配额,而这一配额正在不断减少。)


我尝试过的代码: 为了激活youtube播放器,我将所有相关的youtube代码放在webview中。这可以播放视频,但还不能得到播放器开始播放的时间。要做我想做的事情,我需要有一些方法将代码插入到我的应用程序中,而不会将其困在webview中。或者,在webview中使用某种通信方式

为了尝试与webview通信,我尝试了nativescript webview插件:

$ tns plugin add nativescript-webview-interface
html:

结果:
ERROR-TypeError:undefined不是对象(正在计算'this.webView.ios.constructor')

这是插件的index.ios.js文件中的一个问题。如果我注释掉了有问题的行,那么错误就会消失,但是
什么也没有发生

..

您调用它太早了,请使用WebView的loaded event而不是ngOnInit。即使移动它也会产生相同的错误。您知道angular中的正确更新代码吗:“this.oWebViewInterface=new webViewInterfaceModule.WebViewInterface(webView,~/www/index.html”);”我认为这是不正确的,这是这里的一个关键问题。我很确定,如果你按照我上面解释的做了,那不会产生与对象相同的问题,因为对象根本不会被未定义。将setupWebViewInterface()移动到onWebViewLoaded(args)似乎可以消除该错误,但上面的代码(有了该更改)仍然未在播放机中注册任何状态更改。是否在WebView中看到播放机正在加载?
<web-view src="{{youtubeCode}}"  #webView ></web-view>
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.
   });
 }