在我的有角度的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
..