我正在开发一个小型Web应用程序,点击几个按钮后可以播放非常短的音频片段。它专门针对iOS(iPad)上的移动Safari。
在这里和其他地方阅读有关HTML5音频在移动Safari上的几个“缺陷”以及尝试一些“技巧”和“黑科技”之后,我陷入了一个困境,即Safari似乎被简单地(缺乏更好的词语)破坏了:
我可以在单击按钮A时播放声音A(需要很长时间才能开始-我假设它正在下载[再次]?)。之后,单击按钮B将立即再次播放声音A。按钮C也是如此。在某些情况下,它会播放不同的声音,有时甚至是正确的声音。使用的格式是.aiff,现在是.m4a。
在自己编写了几个微小版本之后,我决定使用Buzz库来处理声音加载/播放等操作。
有趣的是,他们的演示包括一个游戏,几乎完全符合我需要的并且触发了相同的故障行为。我甚至遇到了这样一种情况:移动Safari中的任何音频播放器在任何选项卡中都会播放Buzz演示游戏中的某种声音(!)。
我希望缓存清单可以帮助克服苹果的预加载限制,并强制应用程序在离线模式下点击按钮后立即播放声音。但在确认整个应用已被缓存后,我无法在离线模式下播放/听到任何声音。 有人设法让类似的东西工作了吗?(—看过苹果处理某些事情的方式后,我并不指望会得到多少回应...)
在这里和其他地方阅读有关HTML5音频在移动Safari上的几个“缺陷”以及尝试一些“技巧”和“黑科技”之后,我陷入了一个困境,即Safari似乎被简单地(缺乏更好的词语)破坏了:
我可以在单击按钮A时播放声音A(需要很长时间才能开始-我假设它正在下载[再次]?)。之后,单击按钮B将立即再次播放声音A。按钮C也是如此。在某些情况下,它会播放不同的声音,有时甚至是正确的声音。使用的格式是.aiff,现在是.m4a。
在自己编写了几个微小版本之后,我决定使用Buzz库来处理声音加载/播放等操作。
有趣的是,他们的演示包括一个游戏,几乎完全符合我需要的并且触发了相同的故障行为。我甚至遇到了这样一种情况:移动Safari中的任何音频播放器在任何选项卡中都会播放Buzz演示游戏中的某种声音(!)。
我希望缓存清单可以帮助克服苹果的预加载限制,并强制应用程序在离线模式下点击按钮后立即播放声音。但在确认整个应用已被缓存后,我无法在离线模式下播放/听到任何声音。 有人设法让类似的东西工作了吗?(—看过苹果处理某些事情的方式后,我并不指望会得到多少回应...)
更新1:
本答案中的示例会导致相同的效果:如何在iPad上使用HTML5/Javascript合成音频
更新2:
更新iOS(包括Safari)似乎可以解决音频错误。然而,缓存清单似乎不会影响音频文件。这些文件根本就不可用。
删除缓存清单后,应用程序可以正常工作,但将其添加到“主屏幕”并重新加载会阻止音频播放。