Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 反应本机后台下载_Android_Ios_React Native - Fatal编程技术网

Android 反应本机后台下载

Android 反应本机后台下载,android,ios,react-native,Android,Ios,React Native,我将要构建一个本地存储多个MySqlite*.db文件的应用程序。这些用于向应用程序填充数据 应用程序应定期检查其中一个文件是否有更新版本,如果有,请下载并替换该文件的旧版本。 此更新过程应在后台进行,而应用程序处于非活动状态,甚至处于关闭状态 我见过几个插件,它们可以用来在后台执行任务(如)。这可以用来定期检查更新,但iOS上30秒的时间限制可能不足以下载*.db文件。此外,该插件强制要求Android API的最低版本为21 我的问题是:是否可以在后台轮询更新并下载它们,替换旧文件?我找到了

我将要构建一个本地存储多个MySqlite*.db文件的应用程序。这些用于向应用程序填充数据

应用程序应定期检查其中一个文件是否有更新版本,如果有,请下载并替换该文件的旧版本。 此更新过程应在后台进行,而应用程序处于非活动状态,甚至处于关闭状态

我见过几个插件,它们可以用来在后台执行任务(如)。这可以用来定期检查更新,但iOS上30秒的时间限制可能不足以下载*.db文件。此外,该插件强制要求Android API的最低版本为21


我的问题是:是否可以在后台轮询更新并下载它们,替换旧文件?

我找到了一些有用的插件

1。反应本机获取blob

它有
IOSBackgroundTask
选项

RNFetchBlob
.config({
  path : dest_file_path,
  IOSBackgroundTask: true,
  overwrite: true,
  indicator: true,
})
.fetch('GET', download_url, {
  //some headers ..
})
.progress( (received, total) => {
    console.log('progress : '+ received + ' / ' + total);
})
.then((res) => {
  console.log('# The file saved to :', file_path);
})
顺便说一句,它似乎不能正常工作。 不知道我是否错过了什么

2。反应本机fs

它看起来很好用。
顺便说一下,当我尝试通过推送通知在后台下载时,除非我打开应用程序,否则它不会开始下载。

有人能解决这个问题吗?

我找到了一些有用的插件

1。反应本机获取blob

它有
IOSBackgroundTask
选项

RNFetchBlob
.config({
  path : dest_file_path,
  IOSBackgroundTask: true,
  overwrite: true,
  indicator: true,
})
.fetch('GET', download_url, {
  //some headers ..
})
.progress( (received, total) => {
    console.log('progress : '+ received + ' / ' + total);
})
.then((res) => {
  console.log('# The file saved to :', file_path);
})
顺便说一句,它似乎不能正常工作。 不知道我是否错过了什么

2。反应本机fs

它看起来很好用。
顺便说一下,当我尝试通过推送通知在后台下载时,除非我打开应用程序,否则它不会开始下载。

任何人都能解决这个问题吗?

对于后台下载,我使用过的最好的模块是暂停、恢复和下载百分比

import RNBackgroundDownloader from 'react-native-background-downloader';

let task = RNBackgroundDownloader.download({
    id: 'dbfile',
    url: 'https://link-to-db/MySqlite.db'
    destination: `${RNBackgroundDownloader.directories.documents}/MySqlite.db`
}).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);
});

// Pause the task
task.pause();

// Resume after pause
task.resume();

// Cancel the task
task.stop();

此模块也适用于iOS,您可以在后台连续下载多个文件。

对于在后台下载,我使用过的最好的模块是pause、resume和下载百分比

import RNBackgroundDownloader from 'react-native-background-downloader';

let task = RNBackgroundDownloader.download({
    id: 'dbfile',
    url: 'https://link-to-db/MySqlite.db'
    destination: `${RNBackgroundDownloader.directories.documents}/MySqlite.db`
}).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);
});

// Pause the task
task.pause();

// Resume after pause
task.resume();

// Cancel the task
task.stop();

此模块也适用于iOS,您可以在后台一行下载多个文件。

+1到RNFS示例。根据我的经验,RNFetchBlob是一个不可靠的选择,原因有二。1.它没有维护。2.它会在大文件下载期间阻止JS线程,这将使你的应用程序“冻结”,直到过程结束。使用rn fetch blob,有人在ios上下载背景吗?我尝试使用它,但对于RNFS示例来说,sill不起作用。根据我的经验,RNFetchBlob是一个不可靠的选择,原因有二。1.它没有维护。2.它会在大文件下载期间阻止JS线程,这将使你的应用程序“冻结”,直到过程结束。使用rn fetch blob,有人在ios上下载背景吗?我试着用它,但窗台不起作用