2017-02-16 2 views
-1

Работает на приложение cordova для iOS и Android. Испытывая некоторые новые функции, я заметил, что мои данные localStorage не сохраняются после того, как я остановлю приложение через xcode или закрою его в режиме многозадачности на телефоне. Думаю, это потому, что localStorage не обязательно постоянный, я переключился на использование PouchDB, который хранит его через indexdb/websql. У меня такая же проблема.Кордова iOS потеряла хранилище при приложении отключена

Я использую плагин WKWebview, поэтому я не знаю, может быть, почему. Я тестировал использование pouchdb в chrome на моем ноутбуке, и у меня были проблемы с ним.

Редактировать

Испытано на андроида, такая же проблема. Сила, покидающая приложение, очищает данные indexdb.

ответ

0

Не совсем ответ, но я столкнулся с проблемой. Вместо сохранения в localstorage или websql вместо этого я просто пишу файл JSON с помощью плагина.

function getFileEntry() { 
    return new Promise((resolve, reject) => { 
    // 1mb 
    window.requestFileSystem(window.LocalFileSystem.PERSISTENT, 1024 * 1024, (fs) => { 
     fs.root.getFile('settings.json', { create: true, exclusive: false }, (fileEntry) => { 
     resolve(fileEntry); 
     }, (e) => { 
     console.log(`error reading file ${fs.root.nativeURL}settings.json`); 
     reject(e); 
     }); 
    }, (e) => { 
     console.log('error requesting persistent FS'); 
     reject(e); 
    }); 
    }); 
} 

export function fileApiAvailable() { 
    return window.cordova && window.cordova.file; 
} 

export function readFile() { 
    return getFileEntry().then((fileEntry) => { 
    return new Promise((resolve, reject) => { 
     fileEntry.file((file) => { 
     const reader = new FileReader(); 
     reader.onloadend = function() { 
      if (this.result) { 
      resolve(JSON.parse(this.result)); 
      } else { 
      resolve(null); 
      } 
     }; 

     reader.readAsText(file); 
     }, (e) => { 
     console.log('issue reading the file'); 
     reject(e); 
     }); 
    }); 
    }); 
} 

export function saveSettingsToFile(settings) { 
    if (!fileApiAvailable()) { 
    return Promise.resolve(); 
    } 

    return getFileEntry().then((fileEntry) => { 
    return new Promise((resolve, reject) => { 
     fileEntry.createWriter((fileWriter) => { 
     fileWriter.onwriteend =() => { 
      resolve(); 
     }; 
     fileWriter.onerror = (e) => { 
      reject(e); 
     }; 
     fileWriter.write(JSON.stringify(settings)); 
     }); 
    }); 
    }); 
} 
Смежные вопросы