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