我在尝试在移动应用程序中播放声音时遇到了 Cordova 媒体插件的问题。目前,我使用 Cordova 版本 12.0.0、macos 14 sonoma、cordova 插件媒体 7.1 和 Xcode 版本 15。
以下是相关代码片段:
function playAudio(src) {
var sv = SugarCube.State.variables;
if (!musica) {
if (sv.dispositivo == "ios") {
musica = new Media("sounds/" + src + ".mp3", null, null, function (status) {
if (status === Media.MEDIA_STOPPED) musica.play({ playAudioWhenScreenIsLocked: false });
});
musica.play({ playAudioWhenScreenIsLocked: false });
musica.setVolume("" + sv.vmusica);
} else {
SugarCube.SimpleAudio.tracks.add("music", "sounds/" + src + ".mp3");
musica = SugarCube.SimpleAudio.tracks.get("music");
musica.volume(sv.vmusica);
musica.play();
musica.loop(true);
}
} else {
stopAudio();
playAudio(src);
}
}
我在 macOS 14 Sonoma 上使用 Xcode 15 和 Cordova 12.0.0 以及 Cordova Lib 12.0.1。此外,我正在使用 Node.js v20 和 Cordova Plugin Media 版本 7.0。
有趣的是,当使用 macOS 13.3 Ventura、Xcode 14.3、Cordova 11.0.0 与 iOS 6.3 和 Media Plugin 6.1 时,代码可以正常工作。
我怀疑该问题可能与使用与 macOS 14 不兼容的旧版 Mac 有关,因为它依赖于 OpenCore。然而,即使在 iPhone SE 3rd 上编译,我仍然无法播放声音。
我正在寻求有关 Xcode 15 中使用 Apache Cordova 的 Cordova Media Plugin 7.0 潜在问题的帮助或见解。
Cordova Media Plugin v7 改变了解析文件路径和名称的方式。如果您想访问 www 文件夹内的文件,您现在需要在文件路径的开头添加 / 。
尝试
new Media("/sounds/" + src + ".mp3",...)
如果声音目录位于 www 文件夹内,您的 mp3 应该可以播放。
查看https://github.com/apache/cordova-plugin-media/pull/362了解详细信息。