Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复React for iOS中的audio play()?_Ios_Reactjs_Audio_Playback - Fatal编程技术网

如何修复React for iOS中的audio play()?

如何修复React for iOS中的audio play()?,ios,reactjs,audio,playback,Ios,Reactjs,Audio,Playback,我在React中制作一个计时器应用程序。每当计时器倒数到0时,它应该播放wav声音文件。它可以在IE、Chrome、Edge、Android上正常工作,但在iOS上不行 我已经找到了为什么会发生这种情况的解释,但没有找到解决办法 在iOS上的Safari(适用于所有设备,包括iPad)中,用户可能位于蜂窝网络上,并按数据单元收费,预加载和自动播放被禁用。在用户启动之前,不会加载任何数据。这意味着JavaScript play()和load()方法在用户启动播放之前也是非活动的,除非play()或

我在React中制作一个计时器应用程序。每当计时器倒数到0时,它应该播放wav声音文件。它可以在IE、Chrome、Edge、Android上正常工作,但在iOS上不行

我已经找到了为什么会发生这种情况的解释,但没有找到解决办法

在iOS上的Safari(适用于所有设备,包括iPad)中,用户可能位于蜂窝网络上,并按数据单元收费,预加载和自动播放被禁用。在用户启动之前,不会加载任何数据。这意味着JavaScript play()和load()方法在用户启动播放之前也是非活动的,除非play()或load()方法是由用户操作触发的。换句话说,用户启动的播放按钮可以工作,但onLoad=“Play()”事件不能工作。()


startTimer=()=>{
document.getElementById('beep').play();
}

启动计时器功能在计时器达到0时运行,而不是在单击事件时运行。预期的结果是在iOS上,当计数回到0时播放音频。

不确定这是否有效,但您可以制作一个不可见按钮,在其
onClick
中播放音频,然后尝试在
startTimer()
函数中调用此不可见按钮的
onClick()
函数。这只是一个理论,不确定它是否有效,因为我还没有测试过它。我无法让它像这样工作。看起来这个问题没有解决方法。请参阅此SO帖子:。我浏览了那里的IBM文档。阅读第6页的
Autoplay
部分
 <audio id="beep" src="http://www.pacdv.com/sounds/interface_sound_effects/sound106.wav"></audio>

 startTimer = () => {
      document.getElementById('beep').play();
 }