Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio iOS 7:音频仅在Safari中播放,不在Web应用程序中播放_Audio_Ios7_Safari_Iphone Standalone Web App - Fatal编程技术网

Audio iOS 7:音频仅在Safari中播放,不在Web应用程序中播放

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

我正在尝试构建一个使用音频的iOS网络应用程序。虽然这是一项非常易变的工作,但我最终还是设法让它在Safari Mobile中工作(有趣的是,很久以前它在chrome Mobile中工作过,我不知道为什么…)。然而,当我在主屏幕上将其保存为网络应用程序时,音频会神秘地停止工作

这是音频代码
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函数。