中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序audio組件在ios端無法播放怎么解決

發布時間:2022-04-02 17:01:03 來源:億速云 閱讀:858 作者:iii 欄目:移動開發

今天小編給大家分享一下微信小程序audio組件在ios端無法播放怎么解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

解決方法: 給 audio 組件綁定點擊事件,手動觸發播放暫停方法。

代碼片段:

wxml文件

<!-- 判斷是語音通話,有通話記錄,通話描述不包含"未接" -->
<view class="reference"
    wx:if="{{itemList.activity_type === "phone" && itemList.activity_reference_id && tool.indexOf(itemList.comment,"未接") === -1 }}">
    <!-- 語音播放 -->
    <van-button class="ref-btn" wx:if="{{audioResourceMaps[itemList.activity_reference_id] === undefined}}"
      loading="{{itemList.activity_reference_id === currentGettingReferenceId}}" icon="play" type="info" plain
      data-reference-id="{{itemList.activity_reference_id}}" bindtap="getReference">
    </van-button>
    <view wx:else class="audio-box">
        <!-- 語音播放暫停 -->   
      <van-button class="ref-btn" wx:if="{{audioResourceMaps[itemList.activity_reference_id]}}"
      data-reference-id="{{itemList.activity_reference_id}}"
        icon="pause" type="info" plain bindtap="pauseAudio"/>
        <!-- 點擊沒有通話錄音 --> 
      <span wx:else class="no-audio-text">未找到通話錄音</span>
    </view>
</view>

wxss文件

.reference {
  margin-top: 20rpx;
  height: 100%;
  padding: 5rpx;
  box-sizing: border-box;
}

.ref-btn {
  width: 80rpx;
  height: 80rpx;
  display: flex;
}

.ref-btn button {
  width: 80rpx;
  height: 80rpx;
  border-radius: 50%;
}

js文件

/**
   * 組件的初始數據
   */
  data: {
    currentGettingReferenceId: null,  //正在播放的音頻id
    audioResourceMaps: {}, //點擊過的音頻列表
    isPause:false, // 是否暫停
  },
/**
   * 組件的生命周期 
   */
  lifetimes: {
    attached: function () {
      // 因為是子組件 所以要在這里獲取實例
      this.audioContext = wx.createInnerAudioContext();
    },
    detached: function () {
      // 停止播放
      this.stopAudio()
      // 在組件實例被從頁面節點樹移除時執行
    },
  },
  methods: { 
    // 獲取錄音
    getReference(e) {
      let id = e.target.dataset.referenceId
      if(id != this.data.currentGettingReferenceId){
        this.stopAudio()
      }
      this.setData({
        currentGettingReferenceId:id
      })
      // 點擊獲取錄音url的接口。 接口請求根據自己的封裝來寫
      WXAPI.getResourceUrl(
        `/conversation/conversationsession/${id}/`, {
          data_type: "all",
        }).then(({resource_url}) => {
          console.log("音頻地址====",resource_url,)
        let url = resource_url && resource_url.indexOf("https://") > -1? encodeURI(resource_url) : null
        this.data.audioResourceMaps[id] = url;
        if(resource_url) this.playAudio(id,url)
        this.setData({
          audioResourceMaps: this.data.audioResourceMaps
        })
        console.log("播放過的列表=====",this.data.audioResourceMaps)
      }).catch(function (e) {
        console.log(e)
      })
    },
    // 暫停
    pauseAudio(){
      this.setData({
        isPause: !this.data.isPause
      })
      let id = this.data.currentGettingReferenceId
      console.log(id,"播放暫停的id")
      const innerAudioContext = this.audioContext
      if(this.data.isPause){
        innerAudioContext.pause()
        console.log("暫停播放")
      }else{
        innerAudioContext.play()
        console.log("繼續播放")
      }
    },
    // 停止播放
    stopAudio(){
      const innerAudioContext = this.audioContext
      innerAudioContext.stop()
      let obj = this.data.audioResourceMaps
      for(let item in obj){
        delete obj[item]
      }
      // 停止播放就要把播放列表id對應的音頻地址做清空處理
      this.setData({
        audioResourceMaps: obj,
        currentGettingReferenceId:null
      })
      console.log("停止播放")
    },
    // 播放
    playAudio(id,url) {
      const innerAudioContext = this.audioContext
      console.log(url, "音頻的地址")
      if(url){
        innerAudioContext.src = url
        innerAudioContext.play()
        innerAudioContext.onPlay(() => {
          console.log("開始播放")
        })
        innerAudioContext.onTimeUpdate(() => {
          console.log(innerAudioContext.duration,"總時長")   
          console.log(innerAudioContext.currentTime,"當前播放進度")
        })
        setTimeout(() => {
          console.log(innerAudioContext.duration,"總時長")   
          console.log(innerAudioContext.currentTime,"當前播放進度")
        }, 500)
        innerAudioContext.onEnded(() => {
          let obj = this.data.audioResourceMaps
          for(let item in obj){
            delete obj[item]
          }
          this.setData({
            audioResourceMaps: obj,
            currentGettingReferenceId:null
          })
          console.log("播放完畢")
        })
        innerAudioContext.onError((res) => {
          console.log(res.errMsg)
          console.log(res.errCode)
        })
      }
    }

效果圖

微信小程序audio組件在ios端無法播放怎么解決

??微信小程序中使用vant,必須要在.json 文件中引用 不然標簽不會顯示哦

我是在app.json文件引得  全局可用

"usingComponents": {
    "van-button": "@vant/weapp/button/index",
    "van-icon": "@vant/weapp/icon/index",
  }

以上就是“微信小程序audio組件在ios端無法播放怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永善县| 资溪县| 永新县| 邵阳市| 日喀则市| 福贡县| 安康市| 吉木萨尔县| 克拉玛依市| 马公市| 平乐县| 东平县| 营口市| 裕民县| 江山市| 台湾省| 聊城市| 荃湾区| 彭泽县| 乡城县| 宁都县| 濮阳县| 石门县| 武隆县| 禄丰县| 葵青区| 久治县| 微博| 佛教| 泽普县| 奇台县| 称多县| 望谟县| 淮阳县| 宁波市| 岳普湖县| 哈巴河县| 都江堰市| 武城县| 锡林浩特市| 沛县|