最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年07月02日 09:03:44   作者:🍬Black Eyed Peas🍥  
audio是音頻組件,用于播放一個基于http協(xié)議的音頻資源,這篇文章主要給大家介紹了關(guān)于微信小程序audio組件在ios端無法播放的解決辦法,需要的朋友可以參考下

解決方法: 給 audio 組件綁定點擊事件,手動觸發(fā)播放暫停方法!

代碼片段:

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文件

/**
   * 組件的初始數(shù)據(jù)
   */
  data: {
    currentGettingReferenceId: null,  //正在播放的音頻id
    audioResourceMaps: {}, //點擊過的音頻列表
    isPause:false, // 是否暫停
  },
/**
   * 組件的生命周期 
   */
  lifetimes: {
    attached: function () {
      // 因為是子組件 所以要在這里獲取實例
      this.audioContext = wx.createInnerAudioContext();
    },
    detached: function () {
      // 停止播放
      this.stopAudio()
      // 在組件實例被從頁面節(jié)點樹移除時執(zhí)行
    },
  },
  methods: { 
    // 獲取錄音
    getReference(e) {
      let id = e.target.dataset.referenceId
      if(id != this.data.currentGettingReferenceId){
        this.stopAudio()
      }
      this.setData({
        currentGettingReferenceId:id
      })
      // 點擊獲取錄音url的接口。 接口請求根據(jù)自己的封裝來寫
      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('繼續(xù)播放')
      }
    },
    // 停止播放
    stopAudio(){
      const innerAudioContext = this.audioContext
      innerAudioContext.stop()
      let obj = this.data.audioResourceMaps
      for(let item in obj){
        delete obj[item]
      }
      // 停止播放就要把播放列表id對應(yīng)的音頻地址做清空處理
      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)
        })
      }
    }

效果圖

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

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

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

官網(wǎng)文檔:developers.weixin.qq.com/miniprogram

總結(jié)

到此這篇關(guān)于微信小程序audio組件在ios端無法播放解決的文章就介紹到這了,更多相關(guān)小程序audio組件ios端播放內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用javascript將數(shù)據(jù)導(dǎo)入Excel示例代碼

    用javascript將數(shù)據(jù)導(dǎo)入Excel示例代碼

    將數(shù)據(jù)導(dǎo)入Excel的方法有很多,本例介紹的這個是使用js來實現(xiàn)數(shù)據(jù)的導(dǎo)入,感興趣的朋友可以了解下
    2014-09-09
  • 微信小程序 簡易計算器實現(xiàn)代碼實例

    微信小程序 簡易計算器實現(xiàn)代碼實例

    這篇文章主要介紹了微信小程序 簡易計算器實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實例

    基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實例

    這篇文章主要介紹了基于JS抓取某高校附近共享單車位置 使用web方式展示位置變化代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 5個JavaScript經(jīng)典面試題

    5個JavaScript經(jīng)典面試題

    這篇文章主要介紹了5個JavaScript經(jīng)典面試題,這些面試題可能在各種公司的javascript面試中都會出現(xiàn),需要的朋友可以參考下
    2014-10-10
  • 微信小程序 輪播圖實現(xiàn)原理及優(yōu)化詳解

    微信小程序 輪播圖實現(xiàn)原理及優(yōu)化詳解

    這篇文章主要介紹了微信小程序 輪播圖實現(xiàn)原理及優(yōu)化詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Bootstrap組件學(xué)習(xí)之導(dǎo)航、標簽、面包屑導(dǎo)航(精品)

    Bootstrap組件學(xué)習(xí)之導(dǎo)航、標簽、面包屑導(dǎo)航(精品)

    這篇文章主要介紹了Bootstrap組件學(xué)習(xí)之導(dǎo)航、標簽、面包屑導(dǎo)航(精品)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • JS原型鏈 詳解及示例代碼

    JS原型鏈 詳解及示例代碼

    本文主要介紹JS原型鏈的知識,這里整理了相關(guān)資料及簡單實現(xiàn)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • TypeScript高級用法的知識點匯總

    TypeScript高級用法的知識點匯總

    這篇文章主要給大家介紹了關(guān)于TypeScript高級用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用TypeScript具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • JavaScript自定義事件介紹

    JavaScript自定義事件介紹

    很多DOM對象都有原生的事件支持,向div就有click、mouseover等事件,事件機制可以為類的設(shè)計帶來很大的靈活性,相信.net程序員深有體會。隨著web技術(shù)發(fā)展,使用JavaScript自定義對象愈發(fā)頻繁,讓自己創(chuàng)建的對象也有事件機制,通過事件對外通信,能夠極大提高開發(fā)效率
    2013-08-08
  • OkHttp踩坑隨筆為何 response.body().string() 只能調(diào)用一次

    OkHttp踩坑隨筆為何 response.body().string() 只能調(diào)用一次

    想必大家都用過或接觸過 OkHttp,我最近在使用 Okhttp 時,就踩到一個坑,在這兒分享出來,以后大家遇到類似問題時就可以繞過去
    2018-01-01

最新評論

蒲江县| 遵义县| 衡阳市| 林周县| 黑河市| 林州市| 隆回县| 夏津县| 松江区| 龙岩市| 穆棱市| 海林市| 曲沃县| 沙田区| 同德县| 安塞县| 栾川县| 二连浩特市| 门头沟区| 乐亭县| 金川县| 玉环县| 富锦市| 东乡族自治县| 陈巴尔虎旗| 无极县| 黔江区| 无棣县| 行唐县| 井冈山市| 德清县| 土默特右旗| 石景山区| 雷州市| 舟曲县| 灵武市| 衡阳县| 读书| 许昌县| 新乐市| 芦山县|