真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在微信中實現(xiàn)jssdk錄音功能

這篇文章將為大家詳細講解有關(guān)怎么在微信中實現(xiàn)jssdk錄音功能,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)專注于金安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供金安營銷型網(wǎng)站建設(shè),金安網(wǎng)站制作、金安網(wǎng)頁設(shè)計、金安網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造金安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供金安網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

調(diào)用到的微信接口

// 開始錄音接口
wx.startRecord();

// 停止錄音接口
wx.stopRecord({
success: function (res) {
  var localId = res.localId;
 }
});

// 監(jiān)聽錄音自動停止接口
wx.onVoiceRecordEnd({
 // 錄音時間超過一分鐘沒有停止的時候會執(zhí)行 complete 回調(diào)
 complete: function (res) {
  var localId = res.localId;
 }
});

// 播放語音接口
wx.playVoice({
 localId: '' // 需要播放的音頻的本地ID,由stopRecord接口獲得
});

// 暫停播放接口
wx.pauseVoice({
 localId: '' // 需要暫停的音頻的本地ID,由stopRecord接口獲得
});

// 監(jiān)聽語音播放完畢接口
wx.onVoicePlayEnd({wx.onVoice
 success: function (res) {
  var localId = res.localId; // 返回音頻的本地ID
 }
});

// 上傳語音接口
wx.uploadVoice({
 localId: '', // 需要上傳的音頻的本地ID,由stopRecord接口獲得
 isShowProgressTips: 1, // 默認為1,顯示進度提示
 success: function (res) {
  var serverId = res.serverId; // 返回音頻的服務(wù)器端ID
 }
});

主要涉及的知識點

//項目用到的框架:vue.js
@touchstart // 手指觸碰屏幕,開始長按
@touchend //手指離開屏幕,結(jié)束長按
@touchmove //手指在屏幕上滑動

開發(fā)流程

說明:項目用到的框架:Vue

1.引入微信jssdk,做好微信配置

2.HTML結(jié)構(gòu):

touchstart事件:MDN的定義是:當觸點與觸控設(shè)備表面接觸時觸發(fā)touchstart 事件,換句話來說,就是手指觸碰屏幕時觸發(fā),所以這里監(jiān)聽開始長按。

@touchend事件:當手指從屏幕上離開的時候觸發(fā),這里今天長按結(jié)束。

@touchmove事件:當手指在屏幕上滑動的時候連續(xù)地觸發(fā)。在這個長按錄音的場景中,當手指在屏幕上移動了,也視為錄音結(jié)束,所以要監(jiān)聽手指在屏幕上滑動。

3.js代碼

methods:{
 gtouchstart(){
  // 當用戶長按500ms以上再真正開始錄音
  setTimeout(() => {
   this.longPress()
  }, 500)}
 },
 longPress(){
  wx.startRecord() // 微信開始錄音接口
 },
 gtouchmove(){
  wx.stopRecord({ // 微信結(jié)束錄音接口
   success: res => {
    this.localId = res.localId;
    console.log('中斷結(jié)束錄音')
   }
  })
 },
 gtouchend(){
   wx.stopRecord({ // 微信結(jié)束錄音接口
    success: res => {
     this.localId = res.localId;
     console.log('正常結(jié)束錄音成功了')
    }
  })
 },
 wxUpload() { // 上傳到微信服務(wù)器
  wx.uploadVoice({
   localId: this.localId, // 需要上傳的音頻的本地ID,由stopRecord接口獲得
   isShowProgressTips: 1, // 默認為1,顯示進度提示
   success: res => {
    this.serverId = res.serverId; // 返回音頻的服務(wù)器端ID
   }
  });
 },
}

大致過程如上面代碼所示:

開發(fā)過程遇到的問題

1.調(diào)用微信錄音超過60秒時,微信會自動結(jié)束錄音并且返回一個localId,并且這個localId是無效的

解決方案:

在 wx.startRecord() 開始之前添加定時器,如果錄音時間到達59秒,執(zhí)行wx.stopRecord主動停止錄音,避免用戶錄音時間過長導(dǎo)致錄音無效。

2.微信錄音功能授權(quán)引發(fā)的交互問題

使用微信jssdk接口錄音,在同一個域只需要授權(quán)一次,即第一次使用錄音的時候,微信自己會彈出對話框詢問是否允許錄音,用戶點擊允許后,之后再使用錄音時,便不會再咨詢用戶是否允許。

在第一次按住錄音后,由于用戶未曾允許錄音,微信會提示用戶授權(quán)允許在本頁面使用微信錄音功能,這時用戶會放開錄音按鈕轉(zhuǎn)而去點擊允許,在用戶允許后,才真正會開始錄音,而此時用戶早已放開錄音按鈕,那么錄音按鈕上便不會再有touchend事件,錄音便會一直進行。

解決策略:使用localStorage記錄用戶是否曾授權(quán),并以此來判斷是否需要在剛進入頁面是自動錄一段錄音來觸發(fā)用戶授權(quán)

if(!localStorage.rainAllowRecord || localStorage.rainAllowRecord !== 'true'){
  wx.startRecord({
    success: function(){
      localStorage.rainAllowRecord = 'true';
      wx.stopRecord();
    },
    cancel: function () {
      alert('用戶拒絕授權(quán)錄音');
    }
  });
}

3.在ios下不能自動播放audio的問題

關(guān)于音頻的播放,為了頁面美觀,處理方式是隱藏audio的播放控件,然后給一個按鈕添加時間,通過audio.play()來控制音頻的播放的。但是在ios下有個問題,audio.play()是不能直接播放音頻的,只能顯式地通過操作音頻的播放控件來。這是因為iOS Safari 不允許自動播放 audio,只能通過用戶交互觸發(fā)。這大概是蘋果公司出于用戶體驗而做的限制。

解決方案:

// 在頁面初始化成功后,在wx.ready的回調(diào)函數(shù)內(nèi),收到執(zhí)行下面的方法,這樣ios用戶在點擊播放按鈕時就能正常播放音頻
wx.ready(() => {
 this.$nextTick(() => {
  this.$refs.audio.load()
  this.$refs.audio.play()
  this.$refs.audio.pause();
 })
})

關(guān)于怎么在微信中實現(xiàn)jssdk錄音功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文標題:怎么在微信中實現(xiàn)jssdk錄音功能
瀏覽地址:http://weahome.cn/article/ipdcjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部