即使在杀死并重新启动应用程序后,如何在本机 iOS 中下载音频文件?
Posted
技术标签:
【中文标题】即使在杀死并重新启动应用程序后,如何在本机 iOS 中下载音频文件?【英文标题】:How download audio files in react native iOS even after kill and relaunch the app? 【发布时间】:2020-10-16 23:51:43 【问题描述】:我的应用中有一个使用 React Native (0.59) 开发的场景,我正在尝试下载音频文件。即使用户杀死并重新启动它,我也想继续下载。我正在尝试 'react-native-background-downloader' 包。即使在杀死并重新启动应用程序后,我也会在模拟器中下载和播放。但不是在实际设备中。任何建议将不胜感激。
这是我正在使用的代码块
let task = RNBackgroundDownloader.download(
id: fileName,
url: fileUrl,
destination: `$RNBackgroundDownloader.directories.documents/$fileName`,
).begin((expectedBytes) =>
console.log(`Going to download $expectedBytes bytes!`);
).progress((percent) =>
console.log(`Downloaded: $percent * 100%`);
).done(() =>
console.log('Download is done!');
).error((error) =>
console.log('Download canceled due to error: ', error);
);
这是我的简历任务
let lostTasks = await RNBackgroundDownloader.checkForExistingDownloads();
for (let task of lostTasks)
console.log(`Task $task.id was found!`);
task.progress((percent) =>
console.log(`Re-Downloaded: $percent * 100%`);
).done(() =>
console.log('Re-Downlaod is done!');
).error((error) =>
console.log('Re-Download canceled due to error: ', error);
);
我能够看到重新下载:99%,然后我收到类似的错误 '由于错误取消重新下载:','“CFNetworkDownload_jtLLac.tmp”无法移动到“文档”,因为前者不存在,或者包含后者的文件夹不存在。
【问题讨论】:
【参考方案1】:ios - 额外的强制步骤
在您的 AppDelegate.m 中添加以下代码:
..
#import <RNBackgroundDownloader.h>
...
- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler
[RNBackgroundDownloader setCompletionHandlerWithIdentifier:identifier completionHandler:completionHandler];
...
未能添加此代码将导致后台下载被取消。
并且只使用 RNBackgroundDownloader.directories.documents 作为目的地。
【讨论】:
以上是关于即使在杀死并重新启动应用程序后,如何在本机 iOS 中下载音频文件?的主要内容,如果未能解决你的问题,请参考以下文章