将onPause / onResume添加到Ionic 2页面中的Youtube视频

时间:2017-02-20 23:18:08

标签: javascript angularjs typescript ionic-framework ionic2

我有一个小问题,我需要修复Ionic 2中一个非常基本的演示Android应用程序。

当在主页上播放Youtube视频时,如果按电源按钮或手机进入睡眠/锁定模式,Youtube视频将继续播放。此问题导致Google拒绝Play商店中的应用,因为他们不允许在Youtube嵌入上发生这种情况。

所以我需要添加一些代码来暂停视频,如果状态发生变化,并在它再次唤醒时恢复。

我需要添加的功能似乎被称为onPause和onResume,但我不确定如何以及在何处添加代码以使此功能与此自定义Youtube代码一起使用。

以下是repo中的文件,以及APK(仅3mb)只是在空白离子2安装中更改主页,您可以在其中查看问题。

Github Repo
APK in Github

4 个答案:

答案 0 :(得分:6)

我会添加评论添加到n00b所说的内容,但我还没有50个声望点。添加到noobs的答案,并给予额外的提示。请先将n00b标记为正确的答案。

import { DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';

export class page {
    currentVideoSource: SafeResourceUrl;
    constructor(public navCtrl: NavController, private sanitizer: DomSanitizer) {
        this.currentVideoSource = this.sanitizer.bypassSecurityTrustResourceUrl("youtubeurl");
    }

现在src应该可以使用iframe中的以下内容

[src]="currentVideoSource";

答案 1 :(得分:1)

您应该将该URL添加到Angular2 DomSanitizer例外列表中。您看到的是Angular2的一项安全功能,可以阻止人们在我们的应用中加载恶意URL。

https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html

答案 2 :(得分:0)

从此blog post

它表示您可以使用Apache Cordova事件监听器。

  

Apache Cordova事件不需要为IonicFramework安装额外的插件。

     

要注册一个事件,我们必须在$ ionicPlatform.ready()方法中注册。

有些听众

resume - 当本机平台将应用程序从后台拉出时,将触发resume事件。

暂停 - 将应用程序放入后台时会触发事件。

在线 - 当应用程序联机并且设备连接到Internet时,将触发此事件。

离线 - 当应用程序脱机并且设备未连接到Internet时,将触发事件。

在您的JS文件中,添加

sigusr1_handler()

有关支持的事件的完整列表,请参阅Apache Cordova official website

答案 3 :(得分:0)

我通过直接浏览Youtube视频插件来避免您遇到的问题,您可以在此处看到有关如何安装的预览视频

https://www.udemy.com/master-ionic-3-with-ionic-native-and-cordova-integrations

NODE

ionic cordova add https://github.com/JonSmart/CordovaYoutubeVideoPlayer

npm install @ionic-native/youtube-video-player

APP.MODULE.TS

import {YoutubeVideoPlayer} from '@ionic-native/youtube-video-player'

添加到提供商列表YoutubeVideoPlayer

HOME.TS

import {YoutubeVideoPlayer} from '@ionic-native/youtube-video-player'

在导出类

constructor (private videoPlayer: YoutubeVideoPlayer ) {}

playVideo(video: Video) {
    this.videoPlayer.openVideo(video.videoId)
}

Android所需的API密钥 搜索" Youtube数据API概述"

config.xml("在allow-intent"下)