【发布时间】:2014-09-06 14:42:14
【问题描述】:
欢迎提出任何改进问题或标题的建议。
客观题在上,完整题如下:
如何确定 Cordova 项目支持 WebKit 的哪个“版本”和/或 WebAudio API 的哪个构建/版本?我是 Objective-C 和 XCode 的完全新手,如果对此有明显的答案,请原谅我。
有没有办法使用更新版本的 WebKit 构建 Cordova 应用程序以支持更新的 WebAudio 实现?
有点主观,但考虑到我的应用程序的要求,以及这些替代方案在实践中的效果,任何人都可以评论我可以调查的 WebAudio 替代方案吗?不幸的是,我为这个应用程序在 Javascript/HTML 上投入了大量资金,但需要考虑是否甚至潜入 Objective-C 来重写应用程序或构建一个原生扩展(插件)是否会取得成果。
这些要求基本上是:
- 播放短音频样本(最长 2-3 秒),延迟低于 50 毫秒以响应 UI。
- 需要从最终标注中修复延迟。也就是说,从最终调用 .playSound(...) 开始,不能有额外的可变延迟。这是一个音序器。
- 加载 MP3 或 OGG 样本(不是原始音频)。
- 可以动态加载和卸载样本集。
我知道的 iOS 的唯一选项是 Flash/AIR、带 HTMl5 音频的 Javascript、带 WebAudio 的 Javascript 和原生 Objective-C。最后一个包括与 Cordova 一样的本机扩展/插件。
问题的详细描述如下。
我在使用 Javascript 为 iPad 开发吉他应用程序时遇到了困难,并且遇到了一些糟糕的解决方案。该应用程序使用 WebAudio 创建波表合成器,并实时响应用户输入。播放的核心功能可能会以约 100-200 毫秒的延迟摆脱困境,但应用程序的感觉和一些次要功能依赖于响应更快的约 10-50 毫秒延迟。
我(是的,不明智)完全在桌面 Chrome 中开发了该应用程序,并在 iOS Safari 中进行了一些测试,这让我相信一切都会正常运行。我(不明智地)推迟了使用 Cordova/Phonegap 或 CocoonJS 构建的令人不快的工作,因为我认为在(咳嗽)目标平台上进行快速迭代开发胜过测试。
有什么比发现所有代码都无法在目标平台上运行更糟糕的呢?发现很难确定您的代码是否适用于您的目标平台,因为构建和调试非常有问题......
我遇到的问题,如果当之无愧的话:
- 使用 Cordova 构建时,应用程序无法初始化。我没有控制台输出。 org.apache.cordova.console 插件偶尔工作,我还不能确定这是否可以解决(其他人也有类似的问题)。
- 我可以打开 Safari 并附加远程开发控制台,但无法在应用加载和初始化之前执行此操作。再说一次,很难弄清楚 WebAudio 会发生什么。
- 我在某些运行中获得了一个测试 WebAudio 应用程序来产生声音;在其他运行中它是沉默的。没有控制台输出来帮助识别这一点。
- 从 webkitAudioContext 迁移到最终的无前缀 AudioContext 涉及一些小的代码更改。然而,前者(显然)仍被 Cordova 构建的 WebKit 版本(或者,所有本机 iOS 应用程序都可以访问的版本?)使用,而后者用于(远、远、远更有用和可靠)开发)最新版本的 Chrome。因此,似乎我必须编写一些可以使用任一版本的 API 的适配器代码,但没有可靠的方法在我的目标平台上调试它。
- 互联网上的大量(不是最近的)喋喋不休让我想知道 WebAudio 是否会在使用其旧版本 WebKit 的混合应用程序中充分执行(假设我最终会解决上述所有问题并让应用程序制作声音)。我花了很多时间进行分析和优化以使其在 Safari 中可接受地运行,但没有意识到这可能与独立应用程序有很大不同的性能(或者就此而言,更好性能)。李>
- 不特定于 WebAudio,但由于 Cordova 多次复制的(不变的)音频样本数量,我的应用程序需要 几 分钟来构建每次更改。这是告诉我为什么 Cordova/Phonegap 有如此痛苦的名声的众多危险信号之一。
在底部,我被困在一个地方,可能需要付出相当大的努力才能确定是否需要付出更多的努力来追求已经投资的技术选择(WebAudio,JS/HTML),如果任何有相关经验的人都可以帮助我预测这项工作的结果。我可以开始学习 Objective-C 并为 Cordova 插件编写原生代码(至少有几个现有的项目可以支持简单的原生音频)。我同样可以开始在 Flash 中进行完全重写,这将解决应用程序中的其他问题(例如管理可扩展的 UI 和简化代码和构建管理),但据我所知,保证音频延迟很差,并且肯定会有其他问题。如果我能让现有的代码库在 iOS(iPad 2 及更高版本)上工作,我会很高兴。不幸的是,我没有几个月的时间重新开始,但是如果重新开始是唯一可行的选择...
感谢任何帮助。
【问题讨论】:
标签: ios cordova uiwebview web-audio-api hybrid-mobile-app