Audio iOS 7:音频仅在Safari中播放,不在Web应用程序中播放
我正在尝试构建一个使用音频的iOS网络应用程序。虽然这是一项非常易变的工作,但我最终还是设法让它在Safari Mobile中工作(有趣的是,很久以前它在chrome Mobile中工作过,我不知道为什么…)。然而,当我在主屏幕上将其保存为网络应用程序时,音频会神秘地停止工作 这是音频代码Audio iOS 7:音频仅在Safari中播放,不在Web应用程序中播放,audio,ios7,safari,iphone-standalone-web-app,Audio,Ios7,Safari,Iphone Standalone Web App,我正在尝试构建一个使用音频的iOS网络应用程序。虽然这是一项非常易变的工作,但我最终还是设法让它在Safari Mobile中工作(有趣的是,很久以前它在chrome Mobile中工作过,我不知道为什么…)。然而,当我在主屏幕上将其保存为网络应用程序时,音频会神秘地停止工作 这是音频代码window.helpers.gong是一个base64编码的mp3文件 我通过桌面safari检查了webapp中的控制台输出,但是没有抛出错误 你知道哪里出了问题吗 window.helpers.audio
window.helpers.gong
是一个base64编码的mp3文件
我通过桌面safari检查了webapp中的控制台输出,但是没有抛出错误
你知道哪里出了问题吗
window.helpers.audio = {
myAudioContext: null,
mySource: null,
myBuffer: null,
init: function() {
if ('AudioContext' in window) {
this.myAudioContext = new AudioContext();
} else if ('webkitAudioContext' in window) {
this.myAudioContext = new webkitAudioContext();
} else {
alert('Your browser does not support yet Web Audio API');
}
var self = this;
var load = (function (url) {
var arrayBuff = window.helpers.Base64Binary.decodeArrayBuffer(window.helpers.gong);
self.myAudioContext.decodeAudioData(arrayBuff, function(audioData) {
self.myBuffer = audioData;
});
}());
},
play: function() {
this.mySource = this.myAudioContext.createBufferSource();
this.mySource.buffer = this.myBuffer;
this.mySource.connect(this.myAudioContext.destination);
if ('AudioContext' in window) {
this.mySource.start(0);
} else if ('webkitAudioContext' in window) {
this.mySource.noteOn(0);
}
}
};
代码在加载时按如下方式调用:
window.helpers.audio.init();
然后通过用户操作触发:
...
$('#canvas').click(function() {
if(this.playing == false) {
window.helpers.audio.play();
}
}.bind(this));
...
如果我理解正确,音频在桌面Safari上工作,而不是在移动Safari上工作 这可能是对mobile Safari的限制造成的,该限制要求在用户操作(例如,单击)中播放的任何声音都被触发 请在此处阅读更多信息:
哎哟,答案非常简单: 我将iPhone侧面的静音开关设置为一直静音。
因此,safari即使在静音状态下也会播放音频,但当你将其保存为web应用程序时,它就不再工作了。不,我可能不够精确。它可以在mobile safari上运行,但当我将其作为web应用程序保存到主屏幕时,它就会停止工作。加载页面时调用init函数,单击时调用play函数。