在使用 rn-fetch-blob 获取 .mp3 文件后,我输入了 console.log(filePathIos) 并得到了这样的路径:“/var/mobile/Containers/Data/Application/80D7496B-862A-44D6-9D3A-F0EF31B565CF/文件/xxx.mp3"
我的播放曲目代码:
let filePathIos = `${fs.dirs.DocumentDir}/${fileName}`;
const thisSong = props.songs[0]
const track = {
id: thisSong.id.toString(),
url: filePathIos,
title: thisSong.title,
artist: "xxx"
}
const togglePlayback = async () => {
setAudioStatus(!AudioStatus)
const currentTrack = await TrackPlayer.getCurrentTrack();
if (currentTrack == null) {
await TrackPlayer.add(track);
await TrackPlayer.play();
} else {
if (AudioStatus) {
await TrackPlayer.play();
} else {
await TrackPlayer.pause();
}
}
}
问题是:本地文件下载成功,我可以在本地打开它。但是上面的代码不起作用。当我尝试按下切换按钮时,xcode 显示一些日志为:“开始/恢复播放”但歌曲仍未播放。
如果我尝试在上面的代码中更改一点点(将 url 更改为在线音乐 url),如下所示:
const track = {
id: thisSong.id.toString(),
url: 'https://audio-previews.elements.envatousercontent.com/files/103682271/preview.mp3',
title: thisSong.title,
artist: "xxx"
}
然后该应用程序就像一个魅力,它可以播放歌曲。
我使用这些包来构建应用程序,由于某些特定原因,我无法升级/降级这些包:
- 平台:为IOS反应原生
- react-native-track-player@1.1.3
- 反应原生@0.59.2
- rn-fetch-blob@0.10.15
我没有运气尝试的事情:
- 将 url 从 更改
url: filePathIos
为url: 'file://' + encodeURIComponent(filePathIos)
谢谢你的任何想法!