2016-05-25 11 views
6

注意:この問題は、2016年11月にiOS 10.1.1で修正されました。ありがとうApple!iPadのiOS WebオーディオAPIを無効にする

iPadでWeb Audio APIで音声を再生できません。これはiOSの最新バージョンを使用しています(9.3.2以降 - 現在10.1)。ここで

テストケース

は、私は(以下コード)を設定しているa bare-bones testです。私のためにiPadで動作するテストはありません。 iPhoneやその他の互換ブラウザで問題はありません。 another test page here(ウィリアム・マローン)試した3つのiPadsで再生される音はありません。最後にthis gameはWeb Audio API(Derekに感謝します)を使用し、ミュートされています。

iPadでこれを読んでいる場合は、読み込み、再生、再生、再生の音が再生される場合は、bare-bones testを入力してコメント(またはcontact me privately)を報告してください。 iOSのバージョン番号(設定 - >一般 - >バージョン - >バージョン)を含めてください。

洞察やフィードバックは大変ありがとうございます。オーディオが動作するウェブオーディオAPIのユーザー・アクションから開始されなければならないことを

<!DOCTYPE html> 
<html> 
<head> 
    <title>Web Audio API - iPad Test</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <script src="./jquery-2.2.3.min.js"></script> 
    <style> 
     section { padding:10px; margin:0 0 10px; background:DarkSeaGreen } 
     a { cursor:pointer; display:block; background: DarkSeaGreen; padding:10px; margin:0 0 3px } 
    </style> 
</head> 
<body> 
    <script> 
     var app = {}; 
     $(document).ready(function() { 
      // Do we have Web Audio API? 
      try { 
       window.AudioContext = window.AudioContext || window.webkitAudioContext; 
       audioContext = new AudioContext(); 
      } catch (e) { 
       alert('Web Audio API is not supported in this browser'); 
      } 
      $('#loadClick').on('click',function(){load('./ipad_test.mp3')}); 
      $('#playTouchEnd').on('touchend',play); 
      $('#playTouchStart').on('touchstart',play); 
      $('#playClick').on('click',play); 
      $('#unlockTouchEnd').on('touchend',unlock); 
      $('#unlockTouchStart').on('touchstart',unlock); 
      $('#unlockClick').on('click',unlock); 
     }); 
     function unlock() { 
      // play empty buffer to unmute audio 
      var buffer = audioContext.createBuffer(1, 1, 22050); 
      var source = audioContext.createBufferSource(); 
      source.audioContext = buffer; 
      source.connect(audioContext.destination); 
      source.start(0); 
      $('#messages').append('<p>Unlocked.</p>'); 
     } 
     function load(file) { 
      if(app.loaded) { 
       $('#messages').append('<p>Already loaded.</p>'); 
       return; 
      } 
      var request = new XMLHttpRequest(); 
      request.open ('GET', file, true); 
      request.responseType = 'arraybuffer'; 
      request.onload = function() { 
       audioContext.decodeAudioData(
         request.response, 
         function (buffer) { 
          app.buffer = buffer; 
          $('#messages').append('<p>Loaded.</p>'); 
          app.loaded = 1; 
         }, 
         function(){alert('Load error.');} 
       ) 
      }; 
      request.send(); 
     } 
     function play() { 
      if(!app.loaded) { 
       $('#messages').append('<p>Please load before playing.</p>'); 
       return; 
      } 
      var sourceNode = audioContext.createBufferSource(); 
      sourceNode.buffer = app.buffer; 
      sourceNode.connect (audioContext.destination); 
      sourceNode.start(0); 
      $('#messages').append('<p>Playing.</p>'); 
     } 
    </script> 
    <h1>Web Audio API Test</h1> 
    <p>Unlock should not be needed at all, but offers an alternative way to try and get the audio going. Load and then play should be all any compatible device needs. Refresh to start again.</p> 
    <a id="unlockTouchEnd">Unlock (touchend)</a> 
    <a id="unlockTouchStart">Unlock (touchstart)</a> 
    <a id="unlockClick">Unlock (click)</a> 
    <a id="loadClick" style="background:#c0c0c0">Load (click)</a> 
    <a id="playTouchEnd">Play Audio (touchend)</a> 
    <a id="playTouchStart">Play Audio (touchstart)</a> 
    <a id="playClick">Play Audio (click)</a> 
    <section id="messages"></section> 
</body> 
</html> 

背景

Apple documentation makes it clear:ここ

は、テストコードです。それらは状態:

注:iOSでは、Web Audio APIは、サウンドなどの明示的なユーザー操作(タップなど)からトリガーする必要があります。 onloadイベントからnoteOn()を呼び出すとサウンドは再生されません。

スレッドの数はこれで問題についてオンラインがあり、iOS版と最新のビーイングの秋2015 9.0〜9.2:

これは、iOSオーディオのロックを解除する(またはその時点で問題があったときに触れる)ために、タッチスタートイベントからオーディオを放つことをお勧めします。私はすべての提案されたテクニックを試していますし、タッチスタート、タッチ、またはクリックして作業することはできません。オーディオは常にiPadでミュートされます。

+1

おそらくダムの質問ですが、ミュートスイッチを確認しましたか? これは、iOSデバイスでWeb Audioのものが何度も私に起こっています。私は私の携帯電話が振動するように設定していたことを忘れて、ブラウザは音を再生しません。 –

+0

ありがとうございます。はい、まず試してみました。私は通常、それを確認するためにデバイス上の何かからオーディオを再生します。 – SuperDuperApps

+0

ワイルドな推測:Win DesktopのChromeには、[右クリックするとタブをミュートする]機能があります。これはブラウザでデフォルトで行われていますか、おそらく環境設定から設定されていますか? –

答えて

0

Appleはこの問題をiOS 10.1.1の2016年11月に修正しました。アップルに感謝します!

関連する問題