在 Ionic4 中加载页面时播放声音

Posted

技术标签:

【中文标题】在 Ionic4 中加载页面时播放声音【英文标题】:play sound when page has loaded in Ionic4 【发布时间】:2019-08-23 16:55:12 【问题描述】:

不确定它是否与 Ionic 有关,但是当页面加载时,我有一个播放声音的按钮。

如果我点击那个按钮 - 声音会播放。

然后,我想从那个按钮播放相同的声音 - 但是当页面加载时,所以当页面加载时 - 会播放声音,当您点击该按钮时 - 会播放相同的声音。

NotAllowedError: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

我尝试使用ionViewDidEntersetTimeout 5 秒...但我不断收到此错误消息的权限...

更新 - MEI 分数

我故意将我的权限设置为Auto play sound: Block 以找到正确的解决方案。

我可以根据以下说法提高MEI分数:

在桌面上,用户的媒体参与指数阈值已达到 交叉,表示用户之前播放过有声视频。

这意味着: - 如果在前几页的某处 - 我发出了声音 - 切换到任何其他页面 - 也会触发声音。 - 或有效的点击(加载无声的声音只是为了“收集”权限) - 也可以解决问题..

指望这一点 - 第一次加载 Ionic 项目时,然后正在加载 home.page.ts,这里的技巧是,当我单击菜单项以选择要转到的内页时 -> 这是被认为是有效 click 允许播放音频文件的事件 - 其中声音之前不起作用(因为我一直在刷新同一页面而没有任何点击) - 现在可以在页面切换上使用..

更新背景音乐(视频游戏)

找到这个帖子...我认为这是唯一的方法 How to make audio autoplay on chrome

【问题讨论】:

即使我遇到同样的错误,原因可能是 chrome 浏览器的媒体参与度得分。 navigator.getUserMedia(audio: true, (success) => console.log(success), error => console.warn(error.toString());); 如果您的问题与 MEI 分数有关,并且如果您发现任何指南显示如何改进以提高 MEI 分数,请在此处发布@Ricky 所以navigator.getUserMedia 给了我TypeError: navigator.getUserMedia is not a function,所以我使用了navigator.mediaDevices.getUserMedia( - 响应:Promise <state>: "rejected" .. 然后我点击那个发出声音的按钮 - 并重试了那个代码 - 响应仍然“被拒绝”……(?!) 【参考方案1】:

听起来您的问题与自动播放声音的浏览器权限有关。

在以下情况下允许自动播放声音: 用户与域进行了交互(单击、点击等)。 在桌面上,用户的媒体参与指数阈值已被超过,这意味着用户之前播放过有声视频。 用户已将网站添加到移动设备的主屏幕或在桌面设备上安装了 PWA。

您可以在这里找到更多信息:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio

文章继续建议在启动程序化音频播放时,将返回一个可用于处理成功/失败情况的承诺,例如

var promise = document.querySelector('video').play();

if (promise !== undefined) 
  promise.then(_ => 
    // Autoplay started!
  ).catch(error => 
    // Autoplay was prevented.
    // Show a "Play" button so that user can start playback.
  );

【讨论】:

我也是这么想的,但是加载该代码 - 说audio:请求麦克风权限,video:请求摄像头权限(这是有道理的) - 但两者我都不需要.. . 我只想播放音频...

以上是关于在 Ionic4 中加载页面时播放声音的主要内容,如果未能解决你的问题,请参考以下文章

声音将在 Eclipse 中播放,但不会在导出的 jar 文件中播放

通过 ExoPlayer 或其他选项播放多个音频文件?

没有播放声音

在扩展片段活动android的类中加载soundpool

Soundpool vs Mediaplayer 用于播放多种音效

关于MPMoviePlayerController类播放视频时,外放没有声音的问题(ios)