Как определить, когда воспроизводится встроенное видео с YouTube? - PullRequest
0 голосов
/ 03 июля 2019

В моем угловом приложении 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 ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...