【问题标题】:Cross-domain <audio> element in iOS UIWebView?iOS UIWebView 中的跨域 <audio> 元素?
【发布时间】:2012-08-22 00:17:05
【问题描述】:

我正在使用 Sencha Touch 和 PhoneGap(又名 Apache Cordova)构建一个应用程序。我正在尝试使用 Sencha 的 Ext.Audio 元素(在 DOM 中创建 HTML5 音频元素)播放来自外部域的音频以响应点击事件。

在 Chrome 和 Safari 的桌面版本中,这可以正常工作。当我在 iPhone 上将项目作为“本机”应用程序运行时,音频不会播放,但 Xcode 的控制台不会显示任何错误。

使用相同的Ext.Audio.play() 方法和相同的音频文件,但将文件包含在应用程序中而不是从外部服务器加载,它也会播放。

这是跨域限制吗?有人知道解决办法吗?

【问题讨论】:

  • 您是否已将托管音频文件的域添加到 PhoneGap.plist(或 Cordova.plist,取决于您使用的版本)的白名单中?检查此问题以获取更多详细信息:stackoverflow.com/questions/10795628/…
  • 是的,我忘了提到该域正在用于其他请求(工作正常),所以它被列入白名单...

标签: ios uiwebview sencha-touch html5-audio


【解决方案1】:

这似乎是 HTTP 标头问题。显然 UIWebView 比桌面浏览器更挑剔。不确定,但我改变了主机提供文件的方式,它开始工作了。

【讨论】:

  • 你能解释一下你做了什么改变吗?我有一个类似的问题。谢谢
  • 它有点特定于我的主机,即 WebFaction。最初,我从 mod_wsgi 应用程序中提供文件,我认为它没有设置 Content-Type 标头来指示媒体格式。我将音频文件移动到了一个静态应用程序,我认为它是由 Nginx 提供的——但普通的 Apache 就可以了。之后,它对我有用。
猜你喜欢
  • 1970-01-01
  • 2012-04-13
  • 2023-04-08
  • 2016-03-08
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 2011-12-09
相关资源
最近更新 更多