問題:
-
釘釘小程序的IOS端無法播放后台接口返回來的音頻文件,但是文件在安卓端和模擬器端均可播放;
-
每次點擊播放,音頻播放速度加快一倍,導致音頻無法聽清;
原因:
-
IOS端的dd.getBackgroundAudioManager()接口創建的音頻管理器,manager.play()方法只能播放釘釘返回的臨時的臨時文件路徑;
-
沒有實例化音頻的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端的語音播放需要下載成臨時文件, 麻了