釘釘小程序中蘋果手機/iphone/IOS端音頻無法播放和音頻每次播放速度都加快的原因及解決方法


問題:

  1. 釘釘小程序的IOS端無法播放后台接口返回來的音頻文件,但是文件在安卓端和模擬器端均可播放;

  2. 每次點擊播放,音頻播放速度加快一倍,導致音頻無法聽清;

原因:

  1. IOS端的dd.getBackgroundAudioManager()接口創建的音頻管理器,manager.play()方法只能播放釘釘返回的臨時的臨時文件路徑;

  2. 沒有實例化音頻的title和播放速度playbackRate。

解決方法:
第一個問題提交了工單詢問客服,客服的回答是這樣的:

方法是在播放之前,需要先將接口返回的文件下載,然后傳入播放接口才能播放。

第二個問題在客服給我回復之前就解決了:

方法是實例化音頻的title和播放速度playbackRate,最好也每次播放都重新實例化manager對象(記得手機端測試的時候一定要清除緩存關閉釘釘APP再重新啟動!!!!);

附上代碼片段:

    // 點擊播放
    onInternalAudioTap() {
      dd.downloadFile({                           // 走dd下載接口
        url: detail.cYyms,                        // 參數url是從接口返回的音頻鏈接detail.cYyms
        success: ({ filePath }) => {              // 下載成功后返回音頻文件的臨時路徑filePath 
          let manager = dd.getBackgroundAudioManager();          、// 重新實例化manager對象    
          manager.src = filePath;                 // 將臨時路徑的值賦給manager的src 
          manager.playbackRate = 1;               // 指定播放速度為 1 
          manager.title = '';                     // 給每個音頻重新賦值title, 防止IOS端重復調用play()使播放速度累加
          manager.play();                         // 播放
        },
        fail: (res) => {
          dd.showToast({
            content: res.errorMessage || res.error,
            type: "fail",
            duration: 3000
          })
        }
      })
    }

后記

小程序的文檔到底能不能寫完整一點.......

播放速度playbackRate這個字段完全沒有在dd.getBackgroundAudioManager()這個接口的文檔里出現過,還是我找微信小程序的文檔才找到

而且也沒有任何提示說IOS端的語音播放需要下載成臨時文件, 麻了


免責聲明!

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



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