В моем угловом приложении Nativescript для iOS у меня есть веб-представление, настроенное для воспроизведения видео на YouTube.Следуя методу, аналогичному этому вопросу здесь , я могу заставить видео YouTube загружаться и воспроизводиться автоматически, используя Youtube Iframe API . Но как определить, когда видео действительно начинает воспроизводиться (после его загрузки)?
В API Iframe для этой цели есть события, например, «onStateChange».Но, поскольку мой код на YouTube "застрял" внутри веб-просмотра, я в настоящее время не могу читать, когда события запускаются из этого веб-просмотра.
В Nativescript для этой цели есть плагин nativescript-webview-interface, но я не могу заставить его работать.Я поставил свой код ниже. Если это правильный путь, какой правильный код заставить его работать?
(Я не хочу использовать плагин nativescript-youtube, потому что он вводит квоты для youtube,которые постоянно сокращаются.)
Код, который я пробовал: Чтобы активировать проигрыватель YouTube, я поместил весь соответствующий код YouTube внутри веб-просмотра.Это работает для воспроизведения видео, но еще не для получения события, когда проигрыватель начинает играть.Чтобы сделать то, что я хочу, мне нужно каким-то образом вставить этот код в мое приложение БЕЗ захвата его в веб-просмотре.Или есть какой-то способ общения внутри веб-просмотра.
Чтобы попытаться установить связь с веб-представлением, я попытался подключить плагин nativescript-webview:
$ 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
..