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

Я создал приложение, в котором пользователь может загружать несколько изображений одним щелчком мыши с помощью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();
   })

}, функция (err) {if (! Err) {callback (true)} else {callback (false))}}));

1 Ответ

0 голосов
/ 24 января 2019

Запуск загрузки в фоновом режиме в IOS требует нескольких дополнительных настроек, проверьте этот раздел https://github.com/itinance/react-native-fs#background-downloads-tutorial-ios они также упоминали, что 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.

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

...