Как продолжить загрузку нескольких файлов (изображений сервера AWS) в фоновом режиме в реагирующей нативной iOS

Я создал приложение, в котором пользователь может загружать несколько изображений одним щелчком мыши с помощью act-native-fs, которое отлично работает в Android. Но в iOS, когда приложение неактивно, загрузка прекращается, и пользователь должен начать загрузку снова.

async.eachSeries(DownloadData, async function (tourData, finish) {
    console.log("# resumable : 655612", tourData);
    var fileExtension = '';
    var fileURL = tourData.path;
var fileExtension = "/" + tourData.name + "Image" + p + ".png
     p = p + 1;
    const downloadDest = RNFS.DocumentDirectoryPath + fileExtension;
    let dirs = RNFetchBlob.fs.dirs;
    var v = dirs.DocumentDir;
    var jobId = -1;

    const ret = RNFS.downloadFile({
        fromUrl: encodeURI(fileURL),
        toFile: downloadDest,
        connectionTimeout: 1000 * 10,
        readTimeout: 1000 * 10,
        background: true,
        discretionary: true,
        progressDivider: 1,
        resumable: (res) => {
            console.log("# resumable", res);
        },
        begin: (res) => {
         console.log(res)
        },
        progress: (data) => {
           console.log(data)
        },
    });

    jobId = ret.jobId;

    RNFS.isResumable(jobId).then(true);

    if (await RNFS.isResumable(jobId)) {
        console.log("# resumable : # resumable : # resumable :",jobId);
        RNFS.resumeDownload(jobId)
    }
    ret.promise.then((res) => {
       finish();
   }).catch(err => {
       finish();
   })

}, function (err) { if (!err) { callback(true) } else { callback(false) } }));

1 ответ

Запуск загрузки в фоновом режиме в IOS требует нескольких дополнительных настроек, проверьте этот раздел https://github.com/itinance/react-native-fs. Они также отметили, что IOS даст вам 30 секунд после handleEventsForBackgroundURLSession

BE AWARE! iOS will give about 30 sec. to run your code after handleEventsForBackgroundURLSession is called and until completionHandler is triggered so don't do anything that might take a long time (like unzipping), you will be able to do it after the user re-launces the app, otherwide iOS will terminate your app.

надеюсь, это поможет