欢迎提出任何改进问题或标题的建议。
首先是客观问题,完整的问题如下:
这些要求基本上是:
我知道的iOS唯一选项是Flash / AIR,带有HTMl5音频的Javascript,带有WebAudio的Javascript和本机Objective-C。最后一个包括与Cordova一样的本机扩展/插件。
问题的详细描述如下。
我碰壁了,使用Javascript为iPad开发吉他应用程序,并且陷入了一些糟糕的解决方案。该应用程序使用WebAudio来创建波形表合成器,并实时响应用户输入。回放的核心功能可能会导致约100-200ms的延迟,但应用程序的感觉和某些辅助功能依赖于响应速度更快的约10-50ms延迟。
我(不明智,是的)完全在台式机Chrome中开发了该应用程序,并在iOS Safari中进行了一些测试,这鼓励了我一切正常。我(不明智地)推迟了使用Cordova / Phonegap或CocoonJS进行的令人不快的工作,因为我认为快速迭代开发要比在(咳嗽)目标平台上进行测试驱动重要。
比找出所有无法在目标平台上运行的代码更糟糕的是什么?发现很难确定您的代码是否可以在目标平台上工作,因为构建和调试非常麻烦...
我遇到的问题,如果确实如此,出乎意料:
最重要的是,我被困在一个地方,可能需要花费大量精力来确定是否应该做出更大的努力来追求已经投资的技术选择(WebAudio,JS / HTML),并且如果有相关的人会喜欢的经验可以帮助我预测这一努力的结果。我可以开始学习Objective-C并学习为Cordova插件编写本机代码(至少有两个现有项目支持简单的本机音频)。同样,我可以朝着完全重写Flash的方向发展,这将解决应用程序中的其他问题(例如,管理可伸缩UI并简化代码和构建管理),但据我所知,可以保证较差的音频延迟,并且当然会有其他问题。如果可以使现有代码库在iOS(iPad 2及更高版本)上运行,我会喜欢的。不幸的是我没有几个月要重新开始,但是如果重新开始是唯一可行的选择……
任何帮助表示赞赏。
最佳答案
好吧,首先,我可以为您提供一些调试提示:
我从我自己的经验中知道,在deviceReady
被解雇之前出现的这种“加载错误”确实很麻烦,而且很难找到。
您可以尝试两件事:
首先,要附加到Safari远程调试器,请在初始化WebAudio内容之前编写alert('test');
。诀窍在于,只要您不处理警报消息,应用程序的执行就会停止。因此,有足够的时间连接远程调试器,处理警报消息并从那里获取远程输出。
您可以尝试调试的另一件事是另一个远程调试器weinre。要设置weinre
,请通过sudo npm -g install weinre
安装它,在开发人员计算机上打开weinre
localhost实例,然后将<script src="http://<your developer machine IP>:8080/target/target-script-min.js#anonymous"></script>
行粘贴到index.html
中。如果我没记错的话,那么必须在包含任何其他脚本之前插入这一行。
使用浏览器连接至http://localhost:8080
,在其中找到远程控制台并启动您的应用程序。使用此工具,我在代码中发现了一些难以发现的问题。
我在WebAudio方面不能为您提供具体帮助,但是您是否看过Low Latency Plugin for Phonegap?不久前,当我在Phonegap项目中遇到音频延迟问题时,我偶然发现了它,事实证明它对我很有帮助。
在链接页面上观看YouTube演示。通过其预加载音频的功能和更多改进,它的性能很高,看上去非常适合您的用例。而且,当然,您不需要自己编写本机代码。
关于ios - iOS“默认” UIWebView/WebKit上的WebAudio支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701371/