Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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
Ios 移动狩猎:音频和x2B;缓存清单_Ios_Mobile Safari_Html5 Audio_Cache Manifest - Fatal编程技术网

Ios 移动狩猎:音频和x2B;缓存清单

Ios 移动狩猎:音频和x2B;缓存清单,ios,mobile-safari,html5-audio,cache-manifest,Ios,Mobile Safari,Html5 Audio,Cache Manifest,我有一个小的网络应用程序,点击几个按钮就可以播放很短的声音。它明确针对iOS(iPad)上的mobile Safari 在这里和其他地方阅读了有关移动Safari中HTML5音频的几个“缺点”并尝试了一些“黑客”和技巧后,我陷入了Safari似乎只是(因为没有更好的词)崩溃的局面: 我可以通过点击按钮A播放声音A(它需要很长时间才能启动-我假设它是下载[再次]?),然后点击按钮B将立即再次播放声音A。按钮C也是一样。在某些情况下,它会播放不同的声音,有时甚至是正确的声音。但大部分声音是A。使用的

我有一个小的网络应用程序,点击几个按钮就可以播放很短的声音。它明确针对iOS(iPad)上的mobile Safari

在这里和其他地方阅读了有关移动Safari中HTML5音频的几个“缺点”并尝试了一些“黑客”和技巧后,我陷入了Safari似乎只是(因为没有更好的词)崩溃的局面:

我可以通过点击按钮A播放声音A(它需要很长时间才能启动-我假设它是下载[再次]?),然后点击按钮B将立即再次播放声音A。按钮C也是一样。在某些情况下,它会播放不同的声音,有时甚至是正确的声音。但大部分声音是A。使用的格式是.aiff,现在是.m4a

在我自己编写了一些小版本之后,我决定使用这个库来处理声音加载/播放/等等

有趣的是,他们的演示包括一个游戏,它几乎完全符合我的需要,并且触发了同样的错误行为。我甚至遇到了这样一种情况:任何标签上的移动Safari中的任何音频播放器都会播放Buzz演示游戏中的特定声音(!)

我希望缓存清单可以帮助克服苹果的预加载限制,并迫使应用程序在离线模式下点击按钮后立即播放声音。但在确认整个应用程序都已缓存后,我无法在脱机模式下播放/听到任何声音

有人设法让这样的东西起作用了吗?(-在看过苹果如何处理某些事情后,我并不期望得到太多回应…)


更新1:

此答案中的示例会产生相同的效果:


更新2:

更新iOS(以及Safari)似乎可以解决音频错误。不过,缓存清单似乎不会影响音频文件。这些文件根本不可用


删除缓存清单后,应用程序工作正常,但将其添加到“主屏幕”并重新加载会阻止音频播放。

我希望我能告诉你有一个神奇的公式可以让所有html5媒体完美工作,但没有。目前对HTML5音频/视频的移动支持非常差;远远落后于台式机的前身。更糟糕的是,每个不同的平台处理它的方式都不同,而且大多数平台只支持半新版本

不过,您可以使用一些技巧使媒体文件在mobile Safari中正常工作。为了解释它们,您需要了解它的一些缺点


1) 无法加载多个音频/视频文件

根据我的经验,浏览器一次只能加载一个文件。如果您播放一个文件,请继续播放另一个文件,然后返回,它将重新加载该文件。而且,虽然我自己没有尝试过,但我不相信缓存清单会在这里帮助你

我要做的是把我所有的音频文件合并成一个大的音频文件。然后,根据请求的音频曲目,我会将播放位置移动到适当的起始位置并播放该曲目。然后,我将使用setInterval每隔几毫秒检查一次播放,以确定当前播放位置是否到达曲目的末尾。一旦它这样做了,我就暂停了。冥王星,我给自己几秒钟(2-3)之间的每一个轨道,以防手机的CPU下了很多负载,检查饲料有点太晚

2) 无法自动播放音频/视频文件

苹果在HTML5媒体标签技术中内置了一个限制,即这些曲目只能在用户点击事件后加载和播放。这样,开发者就无法在你访问他们的网站时自动播放恼人的曲目

当我使用音频/视频标签时,我试图构建富媒体广告。因此,当您单击横幅并展开广告时,我将音频/曲目加载连接到横幅单击事件

我建议你应该做的是弹出一个小的灯箱,询问用户是否想要打开/关闭声音。您可以将加载功能附加到该弹出框的单击事件,无论用户是打开还是关闭声音

就我个人而言,我使用load()函数运气不太好。我会运行该功能来加载音频,然后单击播放,它会再次加载。可能一直都是因为我做得不对,所以请随时证明我错了,让它发挥作用。我所做的是告诉曲目播放,这样它就可以开始加载,然后我会使用setInterval来查看当前播放时间是否只增加了几毫秒。一旦我注意到它开始播放曲目,我会立即暂停它

3) 音频/视频标签仅在iOS 4.0及更高版本中受支持

这是不可能的。这只是事实


当我使用音频/视频标签进行开发时,以下几个网站对我有所帮助:



祝你好运

非常感谢!这里似乎有很多很好的建议。肯定会尝试一些东西。你应该知道的另一件事是,在iOS上缓存音频或视频是不可能的。即使使用appcache.com,您是否可以给出一个代码示例-将播放位置移动到适当的起始位置。另外,如果你想播放该曲目3秒钟,那么如何停止播放?