微信-蘋果機無法播放聲音Audio


今天同事測試活動的時候,背景音效(多個)蘋果機無法發出聲音,幾個手機都試過,沒什么用。不過安卓機上倒是沒這個問題,正常。

最開始以為是js沖突問題,將頁面上所有的東西進行加處理(清空,一個個加進來),為了測試方便,在頁面上加了個按鈕,進行點擊播放。

加到最后,都沒有什么問題。

突然想到之前百度查找答案的一個說法:需要觸摸觸發。反正大概就是必須是人為去觸發,而不是我們js進行調用click事件。

如此,我們就在原有頁面上增加了一個按鈕,當點擊時,聲音出來了。

到這一步,聲音播放問題解決。

下一步就是解決初始的時候,點擊時放出的聲音。至於原先的按鈕操作就由頁面本身的一個開始按鈕進行,幸虧頁面最開始還有個開始按鈕,要不然,這觸發問題還得繼續想(最外面加個蒙版,然后用戶一點擊,就觸發,然后去除蒙版,或者將點擊事件至於其他會點擊的按鈕處)。

audio有個屬性是volume,用來控制音量的,1.0是最高的,0.0是靜音。只是這個值,不能<audio volume="0.0" id="test">這么寫。而是需要使用js進行設置document.getElementById("test").volume=0.0才行。而js初始設置,對於蘋果機來說,最開始也是無效的,安卓倒是沒事。

既然不能volume着手,只能換一個方式了。

突然想到,如果開始的時候play(),馬上就parse(),我們人應該是捕捉不到的。就讓同事去試了。

結果是成功。

所以暫時解決方式就是,點擊開始按鈕的時候,立馬調用幾個audio的play()方法,然后馬上pause()。

 

還有個其他辦法,是針對微信的,在ready的時候,就進行調起。

    <script type="text/javascript" src="js/jquery-1-6.js"></script>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script>

		 function autoPlayAudio1() {
			 wx.ready(function() {
				 document.getElementById('audio').play();
			  });
			  wx.config({
				 // 配置信息, 即使不正確也能使用 wx.ready
				 debug: false,
				 appId: '',
				 timestamp:1,
				 nonceStr: '',
				 signature: '',
				 jsApiList: []
			  });
			  
		   }
			autoPlayAudio1();
			   // 方法2: "野生"方法, 借用原來老的 WeixinJSBridge
			   function autoPlayAudio2() {
				  window.onload = function() {
					 // alert(typeof WeixinJSBridge);
					 WeixinJSBridge.invoke('getNetworkType', {}, function(e) {
						// 在這里拿到 e.err_msg, 這里面就包含了所有的網絡類型
						document.getElementById('audio').play();
					 });
				  };
			   }
			  function playbox(){
			var audio=document.getElementById("audio");
			if(audio!==null){             
				//檢測播放是否已暫停.audio.paused 在播放器播放時返回false.
				 //alert(audio.paused);
			  if(audio.paused)                     {                 
				  audio.play();//audio.play();// 這個就是播放  
			  }else{
			   audio.pause();// 這個就是暫停
			  }
			 } 
			}
    </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM