Phonegap NativeAudio 无法在 iOS 上播放

Posted

技术标签:

【中文标题】Phonegap NativeAudio 无法在 iOS 上播放【英文标题】:Phonegap NativeAudio will not play on iOS 【发布时间】:2017-01-10 13:10:51 【问题描述】:

我正在尝试将此插件与我的 PhoneGap Build 应用程序一起使用: https://www.npmjs.com/package/cordova-plugin-nativeaudio

我在我的 config.xml

中调用它
<gap:plugin name="cordova-plugin-nativeaudio" source="npm" />

然后在我的 onDeviceReady 中加载声音,如下所示:

if( window.plugins && window.plugins.NativeAudio ) 

    window.plugins.NativeAudio.preloadSimple( 'slide', 'sounds/slide.mp3', function(msg)
    , function(msg)
       alert( 'error: ' + msg );
    );

else 
   alert("load failed");

然后在我每次移动 a 时发生的函数中发生

window.plugins.NativeAudio.play( 'slide' );

然后我打包并构建应用程序并通过 TestFlight 安装在我的手机上

声音存储在我的www/sounds/ 文件夹中,如果我更改加载代码中的路径/文件名,我的手机会提示“加载失败”,但如果路径正确,它会保持静音,表示成功。然而它在调用时却没有声音。

我尝试通过 Media 插件播放相同的声音,并且它工作正常,所以我知道 .mp3 本身没有任何问题,但它被多次调用,以便 Media 处理冻结应用程序。

编辑:如果此插件损坏或过时,将接受合适的替代方案。

【问题讨论】:

您的音频文件的长度和大小是多少? 文件大小为 7kb,在文件资源管理器中显示为 0:00(也许这也是一个问题),因为它太短了,所以我怀疑它是否太复杂。 正如我在答案中所建议的,尝试使用 preloadComplex 。如果它不起作用,请更改您的音频文件并重试。 【参考方案1】:

我已经测试了这个插件,它工作得很好。

你可以试试他们的sample project

起初我尝试使用您的代码和从互联网下载的声音,但在尝试播放时出现此错误: WARNING: [0x1f197000] 998: Failure to setup sound, err = -50(预加载成功回调,调用play时在Xcode调试区显示)

问题是用preloadSimple 播放的声音太复杂了,使用preloadComplex 为我解决了这个问题,所以也许你的声音太复杂而不能用preloadSimple 播放

注意:当使用preloadComplex时,你必须在成功回调之前传递三个参数,音量,声音,延迟,应该是这样的:

window.plugins.NativeAudio.preloadComplex( 'slide', 'sounds/slide.mp3', 1, 1, 0, function(msg) window.plugins.NativeAudio.play( 'slide' ); , function(msg) alert( 'error: ' + msg ); );

【讨论】:

好吧,这对我来说意义不大,因为我的声音文件只有 7kb 不到一秒的声音,但将其从简单更改为复杂似乎可行。非常感谢! 是的,听起来很奇怪。示例项目中的音频文件为 19-34KB 的简单声音和 1.4MB 的复杂背景声音。也许这与文件的比特率或频率有关。您可以使用MediaInfo等工具检查您的文件mediaarea.net/es/MediaInfo 是的,我会尝试不同的声音和其他东西来试图弄清楚,看看我是否可以缩小问题的范围。这只是延迟了我的游戏的发布,所以我只是需要一些工作。再次感谢您。【参考方案2】:

可能问题出在音频文件的大小/类型上,因此请使用 preloadComplex insted of preloadSimple

 preloadComplex: function ( id, assetPath, volume, voices, delay, successCallback, errorCallback)

【讨论】:

以上是关于Phonegap NativeAudio 无法在 iOS 上播放的主要内容,如果未能解决你的问题,请参考以下文章

无法在本地编译 Phonegap 应用程序

使用 Android 版 PhoneGap:无法在数据库中创建表

PHONEGAP - 无法导入证书 - IOS

无法在 Windows phone 和 iOS 中安装 Phonegap 构建的应用程序

Phonegap 无法加载远程内容

无法在 phonegap 中获取设备语言